添加服务引用、多凭证提示

问题描述 投票:0回答:5

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

当我在对话框中单击“开始”时,我会遇到接受证书的“是/否”提示。我选择“是”,然后出现发现凭据提示,要求输入用户名和密码。

如果我多次正确输入这些内容(3 次以上),我最终可以访问 WSDL。或者,奇怪的是,如果我输入正确一次,然后取消,然后再次完成该过程,我的信用在第一次尝试时就会被接受。

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

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

c# web-services wcf credentials wcf-discovery
5个回答
9
投票

我不确定这是否是答案,但我发布此内容以防对其他人有帮助。

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

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

2)在您至少正确输入一次凭据并再次收到提示后,

不要再做任何事情,持续 30-60 秒(这是我刚刚编造的,YMMV)。如果您等待出现提示,然后然后单击取消,服务引用可能会在那里等待您添加到项目中。

据我所知,Visual Studio 会很快并在有时间下载 WSDL 和/或生成代理类之前重新提示您。


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

解决方案(不匿名): - 输入用户名

和 DOMAIN 信息。 在我的客户环境中有两个域。

您收到三次提示(我认为)是因为它正在三个不同的 url 上进行一些发现操作。


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

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

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

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

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

因此,在我的例子中,VS2010 想要进行匿名身份验证以进行发现,并且似乎不想以与 IE 相同的方式提供凭据。

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

插入服务引用并生成代理。

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

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


0
投票

我发现一个可行的解决方法是来自这个

StackOverflow 答案

- 看来您可以输入凭据作为发现 URL 的一部分,如下所示: http://[username]:[password]@[serviceUrl]/service?wsdl

例如

http://bob1:[email protected]/service?wsdl

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


0
投票
http://server.domain.name/path/to/wsdl

,而是输入 http://server.ip.address/path/to/wsdl,它的工作原理如下魅力。

© www.soinside.com 2019 - 2024. All rights reserved.