편안한 WCF에 대한 최소 구성
-
02-07-2019 - |
문제
WCF가 휴식을 취하기 위해 Web.Config에 넣어야하는 최소한은 무엇입니까? [webget]에 내 방법에 주석을 달았지만 메시지를받지 못하고 있습니다.
해결책
*.SVC 파일의 ServiceHost 지시문에 다음을 추가 할 수 있다는 것을 알게되었으며 WebHttpBinding 및 WebHTTPBehavior를 자동으로 설정합니다.
Factory="System.ServiceModel.Activation.WebServiceHostFactory"
네임 스페이스는 웹의 다른 곳에서 언급 된 것과 약간 다릅니다 (예 : 이 MSDN 기사).
이 작업을 수행 한 후 Web.config에서 전체 섹션을 삭제할 수 있었으며 모든 것이 여전히 작동했습니다!
다른 팁
엔드 포인트에서 webhttpbinding을 사용하는지 확인하십시오 (httpbinding 또는 wshttpbinding이 아님). 여기 내 엔드 포인트 구성이 있습니다 ...
<endpoint address="" binding="webHttpBinding" bindingConfiguration=""
contract="WcfCore.ICustomer">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
서비스 호스트를위한 주소가 있는지 확인해야합니다.
<services>
<service name="SomeLib.SomeService">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/somebase"/>
</baseAddresses>
</host>
<!-- And one EndPoint **basicHttpBinding** WILL WORK !!! -->
<endpoint
address="basic"
binding="basicHttpBinding"
contract="SomeLib.SomeContract"/>
</service>
</services>
이제, 예를 들어 콘솔 앱을 통해 자체 호스팅을하는 경우 : 호스트를 통해 호스트를 호출 할 수 있습니다.
WebChannelFactory<IServiceContract> factory =
new WebChannelFactory<IServiceContract>(
new Uri("http://localhost:8080/somebase"));
콘솔 앱이 시작되면 주소가 자체 호스팅 된 경우에도 주소를 탐색 할 수 있으며 웹젯 URI 템플릿을 기반으로 동작을 호출 할 수 있어야합니다.
이 최소 구성을 통해 셀프 호스트를 통해 WCF를 편안하게 호출 할 수 있습니다. IIS에서 호스팅하는 경우 SVC 파일이 사용자 정의 호스트를 대체하는 것을 제외하고는 본질적으로 동일한 방식으로 작동합니다.
제휴하지 않습니다 StackOverflow