2

これは、この質問の続きです。IISで実行されているWCFサービス(Visual Studio 2010内から)を構成して、1つのWebサービスと1つのnet.tcpサービスを実行しました。多くのハッキングの後、WebサービスをWCFテストクライアントにロードすることができましたが、Net.Tcpサービスをテストクライアントにロードすることができません。

これが私のWeb.configです。

<?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="ServerService" behaviorConfiguration="ServerServiceBehaviour">
        <endpoint address="ServerService.svc" 
                  binding="netTcpBinding" 
                  bindingConfiguration="DefaultNetTcpBindingConfig" 
                  name="NetTcpEndPoint" 
                  contract="IServerService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>

        <endpoint address="mex"
                  binding="mexTcpBinding"
                  contract="IMetadataExchange" 
                  bindingConfiguration="mexTcpBinding"/>
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8523/"/>
          </baseAddresses>
        </host>
      </service>

      <service name="MyWebService" behaviorConfiguration="WebServiceBehaviour">
        <endpoint address="MyWebService.svc"
                  binding="wsHttpBinding"
                  bindingConfiguration="DefaultWSBinding"
                  name="MyWSEndPoint"
                  contract="IMyWebService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange"
                  bindingConfiguration="mexHttpBinding"/>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8523/"/>
          </baseAddresses>
        </host>
      </service>

    </services>
    <bindings>
      <netTcpBinding>
        <binding name="DefaultNetTcpBindingConfig"
                 maxConnections="5"
                 portSharingEnabled="true" >
        </binding>
        <!--<binding name="mexBinding"
                 portSharingEnabled="true">
          <security mode="None"></security>
        </binding>-->
      </netTcpBinding>
      <wsHttpBinding>
        <binding name="DefaultWSBinding"/>
      </wsHttpBinding>
      <mexTcpBinding>
        <binding name="mexTcpBinding"/>
      </mexTcpBinding>
      <mexHttpBinding>
        <binding name="mexHttpBinding"/>
      </mexHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServerServiceBehaviour">
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true" />
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
        <behavior name="MexBehaviour">
          <serviceMetadata httpGetEnabled="true" policyVersion="Policy15"/>
        </behavior>
        <behavior name="WebServiceBehaviour">
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true" />
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>

Visual Studio Debuggerを実行してサービスを公開すると、WCFテストアプリケーションに次のURLを入力してWebサービスにアクセスできます。

http:// localhost:8523 / MyWebService.svc

しかし、次のURLをWCFテストアプリケーションに入力すると、エラーが発生します。

net.tcp:// localhost:8523 / ServerService.svc

これが私が見るエラーです:

エラー:net.tcp:// localhost:8523 / ServerService.svcからメタデータを取得できませんこれがアクセス可能なWindows(R)Communication Foundationサービスの場合は、指定されたアドレスでメタデータ発行が有効になっていることを確認してください。メタデータ発行を有効にするためのヘルプについては、http: //go.microsoft.com/fwlink/ ?LinkId = 65455.WSのMSDNドキュメントを参照してください-メタデータ 交換エラーURI:net.tcp:// localhost:8523 / ServerService.svcメタデータに解決できない参照が含まれています:'net.tcp:// localhost:8523/ServerService.svc'。.Netフレーミングをサポートしていないサービスへのチャネルを作成しようとしました。HTTPエンドポイントに遭遇している可能性があります。予期されるレコードタイプ「PreambleAck」、「72」が見つかりました。

この質問を読んだ後、VS 2010のWebサーバーがnet.tcpバインディングをサポートしていない可能性はありますか?

4

1 に答える 1

0

私が見た問題は、Visual Studio 2010 の Web サーバーが Net.Tcp Binding をサポートしていないことだったようです。

IIS7 をインストールし (IIS6 も Net.Tcp をサポートしていません)、代わりに IIS を使用するように Visual Studio に指示することで、さらに少し進んでいます。

これを行うには、サービスのプロパティ ページに移動し、[Web タブ] を選択して、[ローカル IIS Web サーバーを使用] ラジオ ボタンを選択し、Web サーバーを構成します。

また、このタブで外部プログラムを開始して、WcfTestClient.exe を開始し、URL をコマンド ライン パラメーターとしてサービスに渡すようにすることもできます。

まだ問題がありますが、それらは別の問題であるため、別の質問を開きます。

于 2012-04-26T10:59:29.097 に答える