我在VS中启动了一个新的空白控制台应用程序项目(我正在使用VS2010),并选择“添加服务引用”到受用户名和密码保护的Web服务。
当我在对话框中单击Go时,我遇到了Yes / No提示以接受证书。我选择是,然后我到达Discovery Credential提示,询问用户名和密码。
如果我多次正确地键入那些(3+),我终于可以访问WSDL了。或者,奇怪的是,如果我正确地将它们键入一次,然后取消,然后再次完成该过程,我的信用证会在第一次尝试时被接受。
我问过谷歌,发现了一些与SQL报告网络服务相关的实例,有人发布了here类似的东西,但没有人似乎有明确的答案。
任何人都可以解释这种奇怪的行为吗?服务是否配置不正确,或者这是Web服务或WCF服务的某种已知问题?
答案 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)