调试netTcp WCF绑定

时间:2009-08-28 17:49:05

标签: .net wcf wcf-security

我在远程计算机上的Windows服务中运行netTcp WCF服务。 Windows服务以用户mydomain\u2

运行

Windows服务托管的WCF的.config文件是

<security mode="None">
            <transport clientCredentialType="None" />
            <message clientCredentialType="None" />
</security>

现在我跑

  

svcutil.exe http://wcfhostmachine:8000/MyWCFService?wsdl

客户output.config具有以下安全部分:

<security mode="None">
     <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
     <message clientCredentialType="Windows" />
</security>

他们是不同的。的 WHY ??我应该更改客户端以匹配服务器吗?

虽然我仍然可以向WCF服务发送指令并进行处理,但当Visual Studio尝试进入远程主机上运行的WCF代码时,我得到了臭名昭着的声明:

无法自动调试'....'。连接到服务器计算机失败。目标计算机上的Visual Studio远程调试程序无法连接回此计算机。确保在目标计算机上正确配置了DNS

毋庸置疑DNS没问题。

我能想到为什么遇到这种情况的另一个原因是因为我的Visual Studio正在以mydomain\u1运行,并且该服务正在mydomain\u2上运行在远程计算机上。

过去有没有人面对/解决过这个问题?

更多信息

以下是我的主机服务的App.config。我可以遇到这个问题,因为我没有mex端点吗?

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="my.Indexer" behaviorConfiguration="IndexerServiceBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="http://hostmachine:8000/Indexer"/>
          </baseAddresses>
        </host>
        <endpoint address="net.tcp://hostmachine:9000/Indexer"
                  binding="netTcpBinding"
                  bindingConfiguration="Binding1"
                  contract="my.IIndexer" />
      </service>
    </services>
    <bindings>
      <netTcpBinding>
        <binding name="Binding1"
                     hostNameComparisonMode="StrongWildcard"
                     sendTimeout="00:10:00"
                     maxReceivedMessageSize="65536"
                     transferMode="Buffered"
                     portSharingEnabled="false">
          <security mode="None">
            <transport clientCredentialType="None" />
            <message clientCredentialType="None" />
          </security>

        </binding>
      </netTcpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="IndexerServiceBehavior">
          <serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

1 个答案:

答案 0 :(得分:2)

它们是相同的 - 在这种情况下所有相关的是两端的mode =“None”。一旦将模式设置为“无”,<security>标记内的其余部分就完全无关紧要了。

svcutil.exe创建的只是系统默认值。

马克