2011-08-04 286 views
3

私は多くのWCFサービスを持っており、別のサービスから1つのサービスを呼び出す必要があります。私はこの目的のためにnetNamedPipeBindingを使うことに決めました。net.pipe例外でリッスンしているエンドポイントがありません

私のweb.configファイルは次のようになっています。 (私はここに無関係なものをコピーしていない)

<services> 
      <service    name="Services.AuthorizationService" > 
      <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" > 
      <endpoint 
       name="AuthorizationService" 
       address="" 
       binding="basicHttpBinding"    contract="ServiceContracts.IAuthorizationService" /> 
      <endpoint address="net.pipe://localhost/TestSite/AuthorizationService.svc" 
        binding="netNamedPipeBinding"     contract="ServiceContracts.IAuthorizationService" 
        name="AuthorizationNamedPipeEndpoint"/>   
      </service> 
</Services> 

をweb.configファイル内のクライアントセクションは次のようになります。

<client> 
     <endpoint address="net.pipe://localhost/TestSite/AuthorizationService.svc" 
     binding="netNamedPipeBinding"   contract="ServiceContracts.IAuthorizationService" name="AuthorizationServiceNamedPipe" /> 
    </client> 

私はOperationContract S(GetDetails)のいずれかを呼び出すためにしようとしていますこのような:

using (ChannelFactory<IAuthorizationService> authorizationChannel = new ChannelFactory<IAuthorizationService>("AuthorizationServiceNamedPipe")) 
         { 
          IAuthorizationService authorizationService = authorizationChannel.CreateChannel(); 
          var response = authorizationService.GetDetails(new GetDetailsRequestMessage()); 
         } 

私はこのコードを実行すると、私はOperationContractのGetDetailsを呼び出す行で例外を取得:

メッセージを受け入れることができるnet.pipe://localhost/TestSite/AuthorizationService.svcにエンドポイントがありませんでした。これは、しばしば不正なアドレスまたはSOAPアクションによって引き起こされます。詳細については、InnerException(存在する場合)を参照してください。

私は正確な問題を見つけることができません。 InnerExceptionもありません。 私はWindows7マシンを使用しており、IISバージョンはIIS7.5です。 Winformアプリケーションからこのサービスを問題なく呼び出すことができます。 net.pipeバインディングはIISのWebサイトバインディングに追加されます。

net.pipeトランスポートを使用してサービスが正しく動作していることを確認するにはどうすればよいですか? HTTPの場合は、IEでブラウズして確認できます。

+0

両方のサービスは同じマシンで実行されていますか? – Franchesca

+0

@Franchesca:はい、同じマシン上のIIS 7.5上で動作しています。 – Learner

+0

私が見つけることができるのは、サーバー側にアドレスまたはホストベースアドレスを提供していないということです。それは間違いですか? – Jack

答えて

9

この問題はコンポーネントをControl Panel —> Programs and Features, and then click "Turn Windows Components On or Off" in the left pane. Expand the Microsoft .NET Framework 3.5から有効にした後に解決されました。

非HTTPバインディングを使用すると、WASが自動的に使用されます。

私は非常に基本的な&の間違いをしましたが、多くのことを学ぶのに役立ちました。以下の記事は私をたくさん助けた:

Extend Your WCF Services Beyond HTTP With WAS

Hosting WCF Services in Windows Activation Service

WCF gets Access denied when the consumer try invoke a WCF service calls hosted on Virtual Machine

最後のリンクは私のサーバー証明書関連の設定はトラブルを引き起こしている可能性がありますポインタを与えました。そして、私はサービスのために(質問には見られない)振る舞いを追加していました。その動作ではサーバー証明書を使用していました。

+0

IIS外でホストされているWCFサービスがあります。 IIS内部で実行されているRIAドメインサービスから、nettcpnamedpipeバインディングを介してIISの外部でホストされているこのWCFサービスを呼び出す必要があります。それは動作していないようです。同じ問題に直面しましたか? –

0

SharePoint 2013で同じ問題が発生しました。インストール中に何か問題が発生し、有効化設定が有効になっていませんでした。私はそれがアプリケーションサーバーの機能や他の何かに問題があるかどうかはわかりません。

投稿ありがとう! SP 2013の問題も修正できました。

System.ServiceModel.EndpointNotFoundException:net.pipe:// localhost/SecurityTokenServiceApplication/appstsでリッスンしているエンドポイントがありませんでした。メッセージを受け入れることができるsvc。これは、しばしば不正なアドレスまたはSOAPアクションによって引き起こされます。詳細については、InnerException(存在する場合)を参照してください。 --->

System.IO.PipeException:パイプエンドポイント 'net.pipe://localhost/SecurityTokenServiceApplication/appsts.svc'がローカルマシン上に見つかりませんでした。

関連する問題