何らかの理由で、サービスの Net.Pipe エンドポイント (EP) を動作させることができません。
これは、IIS7 でホストされる .Net 4.0 WCF サービスです。
欠点は2つ…
- まず、EP はメタデータを提供しません。
- 次に、EP は実際には機能しません。VS2010 の一部である WCF テスト クライアントを使用してテストしています。
どちらも実際には同じ問題に関連していると思います。
実際に受け取ったエラーは...
There was no endpoint listening at net.pipe://[machinename].[domainname]/Services/TestService.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
最初に気付いたのは、ベース アドレスでパイプを何と呼んでも、パイプの名前が [machinename].[domainname] に変更されるということです。これは奇妙に思えます。これは、出力されるサービス メタ データで明らかです。ただし、パイプ名またはこの名前を変更した名前をテスト クライアントで使用すると、どちらも機能しません。
また、Windows の機能で WAS を有効にし、IIS ですべてのプロトコルのサイト バインディングを設定し、IIS の [有効なプロトコル] ボックスにプロトコルの名前を入力しました (http、net.tcp、net.pipe)。また、Windows Servics で「Net.Pipe リスナー アダプター」が起動していることも確認しました。
私の http と net.tcp EP はどちらも正常に動作し、メタデータを返します。
私の構成は以下のとおりです。この EP の動作を妨げている原因を誰か知っていますか?? 私はそれが単純なものだと確信しています!!
<system.serviceModel>
<behaviors>
<!-- EP Behaviors -->
<endpointBehaviors>
<behavior name="PayloadMessageInspector">
<MessageHeaderBehavior />
<MessagePayloadBehavior />
</behavior>
</endpointBehaviors>
<!-- Service Behaviors -->
<serviceBehaviors>
<behavior name="GenericServiceBehavior">
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceMetadata httpGetEnabled="true" policyVersion="Policy15" />
</behavior>
</serviceBehaviors>
</behaviors>
<!-- Bindings Section -->
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<bindings>
<!-- Basic Http Binding -->
<basicHttpBinding>
<binding maxReceivedMessageSize="10485760" maxBufferSize="10485760" maxBufferPoolSize="10485760">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
<!-- Net TCP Binding -->
<netTcpBinding>
<binding maxReceivedMessageSize="10485760" maxBufferSize="10485760" maxBufferPoolSize="10485760" />
</netTcpBinding>
<!-- Net Pipe Binding -->
<netNamedPipeBinding>
<binding maxReceivedMessageSize="10485760" maxBufferSize="10485760" maxBufferPoolSize="10485760" />
</netNamedPipeBinding>
</bindings>
<!-- Services Section -->
<services>
<!-- Membership Service -->
<service name="TestService" behaviorConfiguration="GenericServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost/Services/TestService.svc" />
<add baseAddress="net.tcp://localhost/Services/TestService.svc"/>
<add baseAddress="net.pipe://Dev/Services/TestService.svc"/>
</baseAddresses>
</host>
<!-- HTTP -->
<endpoint
address=""
binding="basicHttpBinding"
contract="ITestService" name="TestServiceBasicHttp" behaviorConfiguration="PayloadMessageInspector" />
<!-- NetTCP -->
<endpoint
address=""
binding="netTcpBinding"
contract="ITestService" name="TestServiceNetTcp" behaviorConfiguration="PayloadMessageInspector" />
<!-- NetPipe -->
<endpoint
address=""
binding="netNamedPipeBinding"
contract="ITestService" name="TestServiceNetPipe" behaviorConfiguration="PayloadMessageInspector" />
<!-- Mex (Net.Tcp / Net.Pipe ) -->
<endpoint name="TestServiceNetTcpMex" address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
<endpoint name="TestServiceNetPipeMex" address="mex" binding="mexNamedPipeBinding" contract="IMetadataExchange" />
</service>
</services>
<!-- Extensions -->
<extensions>
<behaviorExtensions>
<add name="MessageHeaderBehavior" type="ServiceMessageHeaderBehavior, TestService.Logging" />
<add name="MessagePayloadBehavior" type="ServiceMessagePayloadBehavior, TestService.Logging" />
</behaviorExtensions>
</extensions>
</system.serviceModel>