解决方案一:通过SOAP Header传递用户名和密码。
1. 首先需要在服务中定义一个从 SOAPHeader 派生的类,表示传入 SOAP 标头的数据。
代码如下:
public class SecurityHeader : System.Web.Services.Protocols.SoapHeader
{
private static string Key = System.Configuration.ConfigurationManager.AppSettings["PublicKey"];
public string PublicKey = string.Empty;
public bool IsValid()
{
if (Key != PublicKey)
{
return false;
}
else
{
return true;
}
}
}
2. 在Web Services使用 SoapHeader 自定义属性定义一组关联的标头,服务中的每个 WebMethod 都可以使用.(默认情况下,标头是必需的,但也可以定义可选标头)
WebService.asmx内容如下:
public SecurityHeader SecHeader;
[SoapHeader("