添加服务引用,多个凭据提示

时间:2012-01-09 17:00:43

标签: c# wcf web-services credentials discovery

我在VS中启动了一个新的空白控制台应用程序项目(我正在使用VS2010),并选择“添加服务引用”到受用户名和密码保护的Web服务。

当我在对话框中单击Go时,我遇到了Yes / No提示以接受证书。我选择是,然后我到达Discovery Credential提示,询问用户名和密码。

如果我多次正确地键入那些(3+),我终于可以访问WSDL了。或者,奇怪的是,如果我正确地将它们键入一次,然后取消,然后再次完成该过程,我的信用证会在第一次尝试时被接受。

我问过谷歌,发现了一些与SQL报告网络服务相关的实例,有人发布了here类似的东西,但没有人似乎有明确的答案。

任何人都可以解释这种奇怪的行为吗?服务是否配置不正确,或者这是Web服务或WCF服务的某种已知问题?

5 个答案:

答案 0 :(得分:8)

我不确定这是否是答案,但是我发布这个以防万一它可以帮助其他人。

从我所看到的情况来看,如果在向安全的Web服务添加Web引用或服务引用时遇到连续的用户名+密码提示问题并且您某些,则表明您正在输入凭据,请确保你尝试两件事:

1)仅使用域\用户名与用户名

2)在你至少输入一次你的凭证并且第二次提示你,不要再做任何事情 30-60秒(我刚刚做了,YMMV)。如果您在提示符等待并且然后单击取消,则服务引用可能就在那里等待您添加到项目中。

从我所看到的情况来看,Visual Studio匆忙并在有时间下载WSDL和/或生成代理类之前重新提示您。

答案 1 :(得分:5)

我遇到了几乎相同的问题。需要提供超过3次的凭据,它永远不会停止。 启用匿名不是一个真正的解决方案。它不会要求凭据。

解决方案(无匿名): - 使用DOMAIN 信息输入用户名。 在我的客户环境中,有两个域。

你得到提示三次是(我认为),因为它正在三个不同的网址上做一些发现。

答案 2 :(得分:0)

昨天和这个人一起苦苦挣扎。谷歌除了发现其他人遇到同样的困惑之外没有多大帮助。

我可以在IE中浏览wsdl,因此IE传递凭据就好了。因此,经过5个小时的“wtf”决定VS2010中的发现对话框的添加引用只是没有传递凭证....由错误消息msg表明服务器不允许匿名认证。

“那么它不会像IE一样提供我的凭据吗?”

嗯,也许不是。也许我假设它会。也许VS2010只需要匿名身份验证才能进行发现。

检查我试图“发现”的SSRS服务,发现匿名是不被允许的。

所以在我的情况下,VS2010想要匿名进行身份验证,并且似乎不想以与IE相同的方式提供凭据。

所以我在托管服务器上打开了IIS,为SSRS服务启用了匿名身份验证,VS2010停止显示无用的登录提示。

服务参考已放入&代理已生成。

我没有尝试过禁用匿名访问,但我有一种感觉,因为我在使用它时会将ClientCredentials传递给代理,因此在主机上禁用匿名访问是安全的。

VS2010只需要从该对话框中匿名进行身份验证,我猜。它并没有像我假设的那样提供凭证。

答案 3 :(得分:0)

我尝试连接到安全的第三方Web服务时遇到了同样的问题,尽管我有凭据并且确实可以正常工作。

我确实找到了一个可行的解决方法来自此StackOverflow answer - 您似乎可以将凭据作为发现网址的一部分输入,如下所示:

http://[username]:[password]@[serviceUrl]/service?wsdl

e.g。

http://bob1:password1@myservice.com/service?wsdl

当我使用“添加服务引用”对话框尝试此方法时,我不再获得这些凭据弹出窗口,并且代理类的创建没有问题。

答案 4 :(得分:0)

我今天偶然发现了一个类似的案子。我遵循了许多解决方法,但它们都没有奏效。然后我尝试了一种新的方法:我没有输入http://server.domain.name/path/to/wsdl,而是输入了http://server.ip.address/path/to/wsdl,它就像魅力一样。