2

次の構成でサービスを作成しました

<system.serviceModel>

<bindings>
  <netTcpBinding>

    <binding name="CommonUserNameBinding" maxConnections="1000" portSharingEnabled="True">
      <security mode="None">
      </security>
    </binding>

  </netTcpBinding>

</bindings>


<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

<services>
  <service name="MyNameSpace.SimplePluginService" behaviorConfiguration="CommonBehavior">

    <endpoint address="UserName"
              binding="netTcpBinding" 
              bindingConfiguration="CommonUserNameBinding" 
              name="MyNameSpace.Contracts.ISimplePluginServiceUserName" 
              contract="MyNameSpace.Contracts.ISimplePluginService">
      <identity>
        <dns value="WCfServer" />
      </identity>
    </endpoint>

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

    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost:5812/Service/SimplePluginService.svc"/>
      </baseAddresses>
    </host>

  </service>
</services>


<behaviors>

  <serviceBehaviors>
    <behavior name="CommonBehavior">
      <serviceMetadata httpGetEnabled="True" policyVersion="Policy15" />
      <serviceDebug includeExceptionDetailInFaults="True"/>
        <serviceCredentials>

        <userNameAuthentication 
            userNamePasswordValidationMode="Custom"
            customUserNamePasswordValidatorType="Megatec.MasterTourService.CustomUserNameValidator, Megatec.MasterTourService"/>

        <serviceCertificate
            findValue="WCFServer"
            storeLocation="LocalMachine"
            storeName="My"
            x509FindType="FindBySubjectName"/>

        <clientCertificate>
          <authentication certificateValidationMode="PeerTrust" />
        </clientCertificate>

      </serviceCredentials>  
    </behavior>
  </serviceBehaviors>

</behaviors>

</system.serviceModel>

</configuration>

ローカル IIS 7.5 でデバッグします。サイトとアプリケーションのアクティブなプロトコル リストに「net.tcp」があります。

net.tcp の IIS バインディングは 5812:*

次のエラーが発生しました

URI 'net.tcp://myComputerName:5812/Service/SimplePluginService.svc/mex' に対応する TransportManager が見つかりません。これは、仮想アプリケーションの外部を指す絶対アドレスを使用したか、エンドポイントのバインド設定が他のサービスまたはエンドポイントによって設定されたものと一致しないことが原因である可能性があります。同じプロトコルのバインディングはすべて、同じアプリケーションで同じ設定にする必要があることに注意してください。

次の質問 No compatible TransportManager errorを読みましたが、うまくいきません。

更新します。問題は mex エンドポイントに関連しています。

サービス用に別のエンドポイントを (別のバインディングと認証タイプで) 作成できますが、mex エンドポイントは TransportManager でエラーを起こしました。

私のテストによると、動作とセキュリティ モード (バインディング セクション) には依存しません。

では、mex エンドポイントの何が間違っているのでしょうか?

4

3 に答える 3

2

タグのaddress="UserName"プロパティはendpointIIS コンソール内で構成されるため、省略します。メッセージ自体は誤解を招きますが、IIS と組み合わせてアドレスを定義するべきではありません。

于 2013-01-11T11:33:19.970 に答える
2

理由はわかりませんが、バインドに maxConnections を設定すると、(mex エンドポイントで) あなたと同じエラーでサービスがアクティブ化されませんでした。

maxConnection 属性を削除すると、完全に修正されました。

于 2016-03-15T19:52:07.657 に答える