none
IIS 托管 net.tcp 協議的WCF服務? RRS feed

  • 问题

  • 服務配置如下:

    <configuration>
      <system.serviceModel>
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <serviceDebug includeExceptionDetailInFaults="true"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <bindings>
          <netTcpBinding>
            <binding name="PortSharing" portSharingEnabled="true"/>
          </netTcpBinding>
        </bindings>
        <services>
          <service name="Business.LongPlus">
            <endpoint binding="netTcpBinding" contract="Contracts.IPlus" bindingConfiguration="PortSharing" address="net.tcp://localhost:8888/Plus"/>
            <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
          </service>
          <service name="Business.LongMinus">
            <endpoint binding="netTcpBinding" contract="Contracts.IMinus" bindingConfiguration="PortSharing" address="net.tcp://localhost:8888/Minus"/>
            <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
          </service>
        </services>
      </system.serviceModel>
      <system.web>
        <compilation targetFramework="4.0"/>
      </system.web>
    </configuration>

    IIS 7的綁定配置如下:

    在IIS 7中可以看到網站還是無效的圖示也不能訪問:

    請問需要如何配製IIS支持net.tcp的Wcf,多謝。

    2012年12月25日 9:50

答案

  • 问题找到了,是我没有启用 Non-Http Activation,如下图:

    还有在网站中启用net.tcp协议,如下图:

    • 已标记为答案 和紳 2012年12月26日 8:56
    2012年12月26日 8:56

全部回复

  • 目前对服务进行了重新配置,配置文件信息如下:

    <?xml version="1.0"?>
    <!--
      有关如何配置 ASP.NET 应用程序的详细信息,请访问
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
    <configuration>
      <system.serviceModel>
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <serviceDebug includeExceptionDetailInFaults="true"/>
              <serviceMetadata />
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <bindings>
          <netTcpBinding>
            <binding name="PortSharing" portSharingEnabled="true">
              <security mode="None"></security>
            </binding>
          </netTcpBinding>
        </bindings>
        <services>
          <service name="Business.LongPlus">
            <endpoint binding="netTcpBinding" contract="Contracts.IPlus" bindingConfiguration="PortSharing" />
            <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
          </service>
          <service name="Business.LongMinus">
            <endpoint binding="netTcpBinding" contract="Contracts.IMinus" bindingConfiguration="PortSharing"/>
            <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
          </service>
        </services>
      </system.serviceModel>
      <system.web>
        <compilation targetFramework="4.0"/>
      </system.web>
    </configuration>

    增加了 Plus.svc 文件,内容如下:

    <%@ ServiceHost Service="Business.LongPlus" %>

    使用命令行注册net.tcp协议:

    %windir%\system32\inetsrv\appcmd.exe set site "PortSharing" -+bindings.[protocol='net.tcp',bindingInformation='808:*']
    

    启动了如下服务:Windows Process Activation Service (WAS)、Net.Tcp Port Sharing和Net.Tcp Listener Adapter。

    以上都是按照微软的MSDN中(http://msdn.microsoft.com/zh-cn/library/ms752218.aspx)的步骤进行的,但使用 wcftestclient 进行添加服务时,出现错误信息如下:

    错误: 无法从 net.tcp://localhost/Plus.svc/mex 获取元数据如果是您有权访问的 Windows (R) Communication Foundation 服务,请检查是否已启用在指定地址发布元数据。有关启用元数据发布的帮助,请参阅 http://go.microsoft.com/fwlink/?LinkId=65455 上的 MSDN 文档。WS-Metadata Exchange 错误    URI: net.tcp://localhost/Plus.svc/mex    元数据包含无法解析的引用:“net.tcp://localhost/Plus.svc/mex”。    无法连接到 net.tcp://localhost/Plus.svc/mex。连接尝试持续了 00:00:02.0313769 时间跨度。TCP 错误代码 10061: 由于目标计算机积极拒绝,无法连接。 127.0.0.1:808。    由于目标计算机积极拒绝,无法连接。 127.0.0.1:808

    根据错误提示无法访问 127.0.0.1:808 ,是否为 WAS 服务没有加载?请问我的操作步骤有问题吗?

    2012年12月26日 8:11
  • 问题找到了,是我没有启用 Non-Http Activation,如下图:

    还有在网站中启用net.tcp协议,如下图:

    • 已标记为答案 和紳 2012年12月26日 8:56
    2012年12月26日 8:56