2010-07-06 2 views
3

net.msmq에서만 서비스를 사용할 때 WCF 클라이언트를 시작하는 방법
- "서비스 참조 추가"를 사용하면 오류가 발생합니다. ..net.msmq 사용시 WCF 서비스 참조 추가 방법

'net.msmq'스키마에 사용할 수있는 바인딩이 없으므로 MetadataExchangeClient 인스턴스를 초기화 할 수 없습니다. 생성자에서 Binding을 제공하거나 configurationName을 지정할 수 있습니다. 매개 변수 이름 : 구성표 서비스가 현재 솔루션에 정의되어있는 경우 솔루션을 빌드하고 서비스 참조를 다시 추가하십시오. ,

net.msmq://localhost/private/WcfNetMsmqAdapterPublishing 

그래서 가능 보인다 ...

예를 들어, 나는 일어 MSDN에서 WcfNetAdapterPublishing 실행는 BizTalk 예제를 가지고, 그것은에서 서비스를 사용하는 콘솔 테스트 클라이언트를 포함 어쨌든 나는 시작할 수 없다.

답변

2

동일한 서비스 및 데이터 계약을 별도의 끝점에있는 basicHttpBinding 이상으로 노출하고 해당 끝점 (및 Metadata Exchange)을 사용하여 서비스 참조를 만든 다음 app.config를 netMsmqBinding 대신 수동으로 적용하십시오.

또는 계약 프로젝트를 서버와 클라이언트 프로젝트간에 서비스 및 데이터 계약과 공유하고 수동으로 구성 (실제로는 큰 문제가 아님)을 만들고 ChannelFactory<T>을 사용하여 클라이언트 프록시를 코드로 생성 할 수 있습니다. netMsmqBinding을 이미 사용하고 있으므로, 양측 모두에서 .NET을 사용하고 있습니다. 따라서이 기술은 잘 작동합니다.

+0

포인터 주셔서 감사합니다. – SteveC

1

접두어가 http 인 기본 주소 (사용자가 소유 한 net.msmq 이외에)를 추가해야합니다. 그래서, 당신이 준 예에서 net.msmq, 당신은이를 추가 :

http://localhost/private/WcfNetMsmqAdapterPublishing ... 

을 당신은 다음과 같이 mex에 대한 엔드 포인트를 추가해야합니다 : 외부 (

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 

그런 다음 서비스를 시작

<service name="Services.Archiver" behaviorConfiguration="FacebookArchiver"> 
     <endpoint address="" 
       binding="netMsmqBinding" 
       bindingConfiguration="msmq" 
       contract="Services.IArchiver" 
       behaviorConfiguration="validator" /> 
     <endpoint address="mex" 
       binding="mexHttpBinding" 
       contract="IMetadataExchange" /> 
     <host> 
     <baseAddresses> 
      <add baseAddress="net.msmq://localhost/private/Archiver" /> 
      <add baseAddress="http://localhost/private/Archiver" /> 
     </baseAddresses> 
     </host> 
    </service> 
: 다음 Visual Studio를) ... 그리고 여기

내 하나의 예 ... 추가 한 http:// 엔드 포인트에 대한 참조를 추가

이 예제에서는 http://localhost/private/Archiver ...에 서비스 참조를 추가하기 만하면됩니다.

+0

응답 해 주셔서 감사합니다. – SteveC

관련 문제