8

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

当我在对话框中单击 Go 时,我会遇到接受证书的 Yes/No 提示。我选择是,然后我到达一个发现凭据提示,要求输入用户名和密码。

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

我询问了 Google 并找到了一些与 SQL 报告 Web 服务相关的实例,并且有人在此处发布了类似的内容,但似乎没有人给出明确的答案。

谁能解释这种奇怪的行为?服务是否配置不正确,或者这是 Web 服务或 WCF 服务的某种已知问题?

4

5 回答 5

9

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

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

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

2)在您至少正确输入一次凭据并再次提示您之后,请在30-60 秒内不要再做任何事情(我只是编造的,YMMV)。如果您等待提示然后单击取消,则服务参考可能会坐在那里等待您添加到项目中。

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

于 2012-01-09T21:19:02.253 回答
4

我遇到了几乎相同的问题。需要提供 3 次以上的凭据,并且从未停止过。启用匿名不是真正的解决方案。它不会要求提供凭据。

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

你得到提示三次是(我认为)因为它在三个不同的 url 上做一些发现的东西。

于 2014-01-09T07:30:40.583 回答
0

昨天在这个问题上苦苦挣扎,除了发现其他人遇到同样的困惑外,谷歌并没有太多帮助。

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

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

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

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

因此,在我的情况下,VS2010 想要匿名身份验证以进行发现,并且似乎不想像 IE 那样提供凭据。

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

服务参考已插入并生成了代理。

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

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

于 2013-02-19T16:00:05.973 回答
0

尽管我拥有凭据并且它们确实有效,但我在尝试连接到安全的第 3 方 Web 服务时遇到了同样的问题。

我确实发现一个可行的解决方法来自这个StackOverflow 答案- 似乎您可以输入凭据作为发现 URL 的一部分,如下所示:

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

例如

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

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

于 2014-05-27T09:11:04.657 回答
0

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

于 2015-10-24T21:06:32.497 回答