0

我正在用 C# 开发一个肥皂网络服务。它看起来像这样:

public class MyService : System.Web.Services.WebService
{

public MyService()
{
}

[WebMethod]
public string Hello()
{

    return "hello";
}
}

我从另一个网站添加了对此 Web 服务的服务引用,因此我可以Hello()使用代码从那里访问该方法:

MyServiceSoapClient client = new MyServiceSoapClient();
client.Hello();

现在我需要将凭据传递给该 Web 服务。我努力了:

MyServiceSoapClient client = new MyServiceSoapClient();
    client.ClientCredentials.UserName.UserName = "test";
    client.ClientCredentials.UserName.Password = "pwd";
    client.Hello();

但我无法设法在 web 服务中获取这些凭据(在Hello()方法中)。

如何在 Web 服务中获取这些值?

4

1 回答 1

1

您可以通过WebService.User属性获取用户。这将为您提供用户名,但无法检索传递的密码,这是设计使然,因为身份验证在运行 WebService 之前发生在 IIS 级别。

public class MyService : System.Web.Services.WebService
{
    public MyService()
    {
    }

    [WebMethod]
    public string Hello()
    {
        return "hello, my name is " + User.Identity.Name;
    }
}
于 2013-07-30T13:41:12.843 回答