我也不相信 - 我会向任何有兴趣的人展示加入我!VIsual Studio 2010保留到WCF服务参考密码?
这是交易。两台计算机与添加服务引用的行为不同。
计算机1 - 我会打电话给他BigMac
电脑2 - 我会打电话给他Littlemac
我写了一篇关于BigMac的Web服务。和一个Windows客户端应用程序来调用它。所有作品都很棒。部署到客户端的计算机,所有工作都很好。我们决定保护服务器,以便消费者必须将Windows用户名/密码传递给服务,我们将使用Https。 8小时后,在这里和其他地方进行了大量搜索,我找到了答案。服务器配置。看起来像这样:
<services>
<service name="SecureWcfTestsApplication.Service1">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration ="Binding2"
contract="SecureWcfTestsApplication.IService1" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="Binding2">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
将其部署到远程服务器上。转到任何Web浏览器,输入服务URL,输入用户名和密码,然后获取服务描述。都好。
但是 - 客户端代码可以调用它而不提供任何凭据。
客户端代码仅仅是这样的:
remote.Service1Client服务1 =新remote.Service1Client(); service1.GetData(20);
就是这样。它从Visual Studio中运行,并作为exe。如果我将exe复制到另一台机器上,它不会运行。
好的 - 在BigMac(同一台计算机)上开始一个新项目 - 这里没有服务实现只是一个Windows应用程序。我添加了远程服务引用,但它又不要求输入用户名和密码。我可以在没有任何凭证的情况下致电该服务。
转到LittleMac。打开网页浏览器并导航到服务 - 我需要一个用户名/密码。打开Visual Studio,添加服务引用 - 我需要用户名/密码。客户端代码需要设置用户名/密码。
我重新启动BigMac - 从头开始 - 新项目 - 添加Web引用 - 不需要密码并且运行。
Wtf?任何人?
最佳
雷
嘿 - 感谢有它刺伤。如果你所说的是正确的 - 有没有什么办法可以“解密”这台计算机,因为这实际上可能会导致一些问题呢?在这台机器上,我忘记在代码中设置凭据,但无论如何它都能正常工作。但是它在部署时不起作用,会吗? – RBrowning99 2012-03-22 17:15:48
我不知道你是否能够避免自动认证,因为WCF没有问你为你做。不,如果您将它部署到另一台计算机上,它将无法正常工作,正如您在另一台计算机上部署它时看到的那样。 – 2012-03-22 21:35:37
再次想到,您可以尝试将ClientCredentialType设置为“密码”(请参阅http://msdn.microsoft.com/zh-cn/library/ms733836.aspx),那么理论上它应该会询问您的凭据,即使您已经通过身份验证。我很抱歉,但我现在没有时间去尝试。 – 2012-03-23 08:09:57