ASMX:在运行时设置用户/密码

Posted

技术标签:

【中文标题】ASMX:在运行时设置用户/密码【英文标题】:ASMX: Setting User/Password at run-time 【发布时间】:2010-06-10 17:13:35 【问题描述】:

当我想连接到我的网络服务时如果我这样写:

m_TransferServiceSoap.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;

它正在工作。但我需要一个登录表单。所以用户可以输入他们的用户/密码

所以我正在创建一个 NetworkCredential 实例并根据我从该登录表单中获得的内容设置其用户/密码成员,然后我不使用上面的行,而是写这个:

m_TransferServiceSoap.Credentials = userpass; // the instance above.

但是以这种方式,当我调用该 webService 的方法时,它会给我错误。

设置凭据的方法是否错误?

【问题讨论】:

您在创建 NetworkCredential 时是否包含域名? 不,我不是...只是我正在设置用户并传递我从该登录表单上的文本框中获取的信息。嗯..好的..所以如果我有这样的东西:“WHQ_A_DOMAIN\userID”......那么第一部分应该作为域传递,第二部分应该作为用户名传递? 是的,调用应该如下所示: var nc = new NetworkCredential( "Name","Password","Domain Name"); 谢谢帕特里克,非常感谢 【参考方案1】:

您在创建 NetworkCredential 时是否包含域名?

调用应该如下所示:

var nc = new NetworkCredential( "Name","Password","Domain Name"); 

我已将此作为答案添加,以便如果它有效,我可以加分...

帕特里克。

【讨论】:

关于这个的另一个问题:现在我的域名有一些这样的模式,由公司 "WHQ_A_DOMAIN\myUser" 设置。但我不确定当我们的客户在自己的域上使用它时会是什么样子?那么有没有办法获得“域名”名称?例如在我的情况下会返回“WHQ_A_DOMAIN” 好的,看起来 Environment.UserDomainName 返回了域名。所以模式总是这样:DOMAIN\userName【参考方案2】:

这对我有用

myservice g = new myservice();
g.AuthenticationHeaderValue = new AuthenticationHeader();
//Authentication values
g.AuthenticationHeaderValue.UserName = "sdaaad";
g.AuthenticationHeaderValue.Password = "sbvbfb#%$3df";

【讨论】:

以上是关于ASMX:在运行时设置用户/密码的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch7.14.0安装,配置密码认证及创建用户

IIS 下运行 ASMX

返回非常大的字符串时.asmx 请求超时

Active Directory 如何在设置新密码时比较用户以前的密码?

如何在没有管理员权限的情况下使用 vbs 将任务设置为在登录时以当前用户身份运行?

程序需要在有auth认证的mongodb下运行eval函数或命令时提示无权限