2011-05-11 4 views
3

wshttpbindingbasichttpbinding을 지원하는 WCF 서비스를 호스팅하려고합니다. 이유는 듀플렉스가 필요한 데스크탑 클라이언트와 Windows 모바일 클라이언트에 대한 이유입니다.양방향 엔드 포인트 및 비 양방향 엔드 포인트 모두에 대한 WCF OperationContract

내가 3 개의 OperationContracts를 가지고 있고 그 중 2 개는 이중화가 필요하고 1 개는 필요 없다고합니다.

2 OperationContract를 wsHttpBinding으로 표시하고 마지막 하나를 으로 끝내려면 basicHttpBinding으로 표시 할 수 있습니까?

때문에 나는이 오류 얻을 시도 할 때 :

계약이 세션이 필요합니다,하지만 바인딩 '은 BasicHttpBinding'하지 않습니다 지원이 또는 제대로 지원하기 위해 를 구성되지 않았습니다.

이 방법을 사용할 수 있습니까? 아니면 각 바인딩에 대해 별도의 WCF 서비스를 만들어야합니까?

조언과 도움에 감사드립니다.

답변

2

모든 엔드 포인트는 해당 서비스에 대해 항상 의 모든 조작을 노출합니다.

Service1의 한 가지 방법과 두 가지 다른 방법의 양방향 끝점에 대해 "기본"끝점을 노출 할 수 없습니다.

유연성이 필요한 경우에는 양면 인쇄 작업을 처리하는 하나의 서비스 구현과 다른 서비스 구현을 처리하는 두 가지 개별 서비스 구현을 만들어야합니다.

이제
+0

다른 방법이 없으니 빠른 답장을 보내 주셔서 감사합니다. – Tan

+0

[ServiceContract (SessionMode = SessionMode.Allowed, CallbackContract = typeof (IProductionCallback))]을 변경하면 어떻게됩니까? ? 대신 SessionMode = SessionMode.Required – Tan

+0

@Tan [Microsoft는 다음과 같습니다.] (https://msdn.microsoft.com/en-us/library/ms731064 (v = vs.110) .aspx) " 듀플렉스 서비스는 세션 내에서만 작동합니다. "따라서 SessionMode.Allowed는 유효한 구성이 아니므로 작동하지 않습니다. –

0
<endpoint 
     address="ws" 
     binding="wsHttpBinding" 
     contract="YourNamespace.IMyService" /> 
    <endpoint 
     address="basic" 
     binding="basicHttpBinding" 
     contract="YourNamespace.IMyService" /> 

유 사용 DIFF 클라이언트에서 서비스에 액세스 할 수

http://localhost/ws 
http://localhost/basic, 

제공, 기본 주소는 u는 기본 URI를 사용하여 액세스 할 경우

 <host> 
      <baseAddresses> 
       <add baseAddress="http://localhost/" /> 
      </baseAddresses> 
     </host> 

가, 세션이되지 않을 것입니다 만들어진.

+0

Windows Mobile은 양면 인쇄를 지원하지 않으므로 작동하지 않습니다. 그리고 내 operationcontracts에는 이중 및 양방향 작업이 없습니다. 그리고 나는 basichttpbinding을 사용할 때 양방향성이없는 작업 만 노출하려고합니다. – Tan

+0

이렇게하면 두 종단점에서 ** 세 작업 **이 모두 노출됩니다. 작동하지만 Tan이 찾고있는 것은 아닙니다 ... –

+0

basicHttp에서 단방향 통신에 대해 잘 모릅니다. 귀하의 경우이 링크가 어떤 용도로 사용될 수 있는지 확인하십시오. http://www.codeproject.com/KB/WCF/double_simplex_wcf.aspx – Raghav

관련 문제