Wir haben eine sehr große, komplexe MVC2-Website. Wir möchten eine API für einige interne Tools hinzufügen und entschieden uns für WCF.Host-WCF in MVC2-Site
Idealerweise möchten wir, dass MVC selbst den WCF-Dienst hostet. Gründe dafür sind:
Ich habe ein benutzerdefiniertes ServiceBehavior geschrieben, das wiederum einen benutzerdefinierten InstanceProvider enthält. Dadurch kann ich einen Container instanziieren und konfigurieren, der dann verwendet wird, um alle Anforderungen für Klasseninstanzen von WCF zu bearbeiten.
Also meine Frage ist; Ist es möglich, einen WCF-Service innerhalb von MVC selbst zu hosten?
Ich hatte nur Erfahrung in Services/Standard Asp.Net Websites vor und nicht realisiert, MVC2 könnte anders sein, bis ich tatsächlich versucht, es in die Konfig und nichts passiert. Nach etwas Googeln scheint es nicht viele Hinweise darauf zu geben - also dachte ich, ich würde hier fragen.
Mehr Detail:
Dank diejenigen, die geantwortet, aber ich bin immer dies immer noch Probleme mit zu arbeiten ... Meine aktuelle Konfiguration sieht wie folgt aus: jemand
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"
aspNetCompatibilityEnabled="true">
<serviceActivations>
<add relativeAddress="Job.svc"
service="MyApplication.WebJobManager"
factory="System.ServiceModel.Activation.WebServiceHostFactory" />
</serviceActivations>
</serviceHostingEnvironment>
<extensions>
<behaviorExtensions>
<add name="WCFDIBehavior" type="MyApplication.Jobs.WCFDIBehaviorExtension, MyApplication.Jobs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
</extensions>
<standardEndpoints>
<mexEndpoint>
<standardEndpoint name="WebJobManagerMex" />
</mexEndpoint>
</standardEndpoints>
<behaviors>
<serviceBehaviors>
<behavior name="JobServiceBehavior">
<serviceMetadata />
<WCFDIBehavior />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="" name="MyApplication.Jobs.WebJobManager">
<endpoint binding="basicHttpBinding"
bindingConfiguration="" name="HTTPEndpoint" contract="MyApplication.JobService.Interfaces.IWebJobManager" />
</service>
</services>
</system.serviceModel>
Can Bitte sag mir, wenn etwas offensichtlich falsch aussieht?
Ich habe erwartet, den Endpunkt bei http://localhost/MyApplication/Job.svc
und Metadaten bei http://localhost/MyApplication/Job.svc?mex
zu finden, aber beide geben eine 404 - So weit ich sagen kann, gibt es kein offensichtliches Zeichen, dass WCF überhaupt läuft. Muss ich vielleicht etwas auf meinen Routen machen?
NB: Falls andere haben dieses Problem, ich routes.IgnoreRoute("{MyJob}.svc/{*pathInfo}")
zum Route-Setup in Global.asax
hinzufügen hatte MVC zu verhindern, dass der Anruf abfängt.
Folgefrage hier: http://stackoverflow.com/questions/4683413/wcf-dependency-injection-issue – Basic
Wow 1.000 Aufrufe und 2 Upvotes? Möchte mir jemand sagen, was ich falsch mache? – Basic