当我尝试访问Web服务时,收到以下错误消息:
未提供用户名。在ClientCredentials中指定用户名。
我确实创建了新的凭据,如下面的代码所示:
public AppWebService_PortClient openConn2()
{
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
BasicHttpSecurityMode sMode = binding.Security.Mode;
EndpointAddress adress = new EndpointAddress("myURL");
AppWebService_PortClient client =
new AppWebService_PortClient(binding, adress);
client.ClientCredentials.Windows.ClientCredential =
new System.Net.NetworkCredential("Username", "Password", "Domain");
string userName =
client.ClientCredentials.Windows.ClientCredential.UserName;
//client.ClientCredentials.Windows.AllowedImpersonationLevel
//= TokenImpersonationLevel.Delegation;
return client;
}
如果我在string userName
中读出凭据,我会获得正确的用户名。为什么我会收到这个错误?
答案 0 :(得分:1)
看起来有点像这个问题:Setting ClientCredentials: getting "Username is not provided" error
其中有以下"解决方案"。这可能适用于您的情况。:
您是否有安全模式,在配置文件中正确配置了clientCredentialtype?这是一篇与您的问题非常匹配的博客文章。我希望这有帮助!
http://amadotech.blogspot.com/2009/11/error-username-is-not-provided-specify.html
实际上我的申请有三个原因:
安全模式不合适。 客户端凭据类型不合适。 呼叫错过了传递所需的用户名和密码。
答案 1 :(得分:0)
您应该使用
client.ClientCredentials.UserName.UserName = "Username";
client.ClientCredentials.UserName.Password = "Password";
代替。