우리는 매우 크고 복잡한 MVC2 웹 사이트를 가지고 있습니다. 일부 내부 도구 용 API를 추가하고 WCF를 사용하기로 결정했습니다.MVC2 사이트의 호스트 WCF
이상적으로 MVC 자체가 WCF 서비스를 호스팅하기를 원합니다. 이유는 다음과 같습니다 :
- 응용 프로그램에 여러 계층이 있지만 API에서 우리가 원하는 일부 기능에는 웹 사이트 자체 (예 : 전자 메일 형식)가 필요합니다.
- 우리는 TFS를 사용하여 자동 빌드 (연속 통합) 및 배포를 수행합니다. 빌드 및 릴리스 메커니즘을 수정해야 할 필요성이 줄어 듭니다.
- 응용 프로그램 전체에서 Unity 컨테이너와 Inversion of Control을 사용합니다. 웹 사이트에 참여하면 구성 클래스 및 기타 도우미 메서드를 다시 사용할 수 있습니다.
사용자 지정 ServiceBehavior가 작성되어 사용자 지정 InstanceProvider가 있습니다.이 인스턴스를 사용하면 WCF의 클래스 인스턴스에 대한 모든 요청을 처리하는 데 사용되는 컨테이너를 인스턴스화하고 구성 할 수 있습니다.
내 질문은; MVC 자체에서 WCF 서비스를 호스팅 할 수 있습니까?
이전에 서비스/표준 Asp.Net 웹 사이트에서 경험 한 적이 있었고 실제로 구성에 연결하려고 시도 할 때까지 MVC2가 다를 수 있다는 것을 모르거나 아무 것도 발생하지 않았습니다.. 인터넷 검색을 한 후, 이렇게하는 것에 대한 언급이 많지 않은 것 같습니다. 그래서 여기에서 물어볼 생각이었습니다.
더 많은 세부 사항 :하지만 난 여전히이 작업을 점점 문제에 봉착 대답 분들에게
감사합니다 ... 나의 현재 설정은 다음과 같습니다
<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>
수있는 사람 분명히 틀리게 보이는 것이 있으면 알려주시겠습니까?
끝 점이 http://localhost/MyApplication/Job.svc
이고 메타 데이터가 http://localhost/MyApplication/Job.svc?mex
인 것으로 예상되었지만, 둘 다 404를 제공합니다. 내가 알 수있는 한, WCF가 실행되고 있다는 명백한 신호는 없습니다. 내 노선에 무언가를해야 할 필요가 있을까요?
NB : 경우 다른 사람에 내가 전화를 차단 MVC를 방지하기 위해 Global.asax
의 경로 설정에 routes.IgnoreRoute("{MyJob}.svc/{*pathInfo}")
를 추가했다,이 문제가 있습니다.
여기에 질문을 추가 : http://stackoverflow.com/questions/4683413/wcf-dependency-injection-issue – Basic
와우 1,000 조회 및 2 upvotes? 누구든지 내가 뭘 잘못하고 있는지 말해 줄까? – Basic