我在远程计算机上的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>
答案 0 :(得分:2)
它们是相同的 - 在这种情况下所有相关的是两端的mode =“None”。一旦将模式设置为“无”,<security>
标记内的其余部分就完全无关紧要了。
svcutil.exe创建的只是系统默认值。
马克