未提供C#store app Web服务用户名

时间:2014-06-18 12:46:16

标签: c# web-services windows-store-apps

当我尝试访问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中读出凭据,我会获得正确的用户名。为什么我会收到这个错误?

2 个答案:

答案 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";

代替。