实现带有身份验证的WebService

找了一下关于Asp.NET Forms  WebService,大部分都是转贴“chinadhf”的下篇文章:
使用ASP.Net Forms模式实现WebService身份验证

其中提到:
System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer();

MyService.WebService service 
= new App.MyService.WebService();
service.CookieContainer 
= cookieContainer;

但是,我怎么也没有找到代理实体的CookieContainer属性,惭愧!给各路牛人发邮件、回帖、留消息,都没有人答复,遗憾!!

好在又从网上找到一些资料可以解决我的问题,虽然我也觉得不是最佳解决办法。现在共享出来:

1、创建一个SoapHeader的派生类
 public class CredentialSoapHeader : SoapHeader
 {
  public string UserName
  {
   get;
   set;
  }

  public string Password
  {
   get;
   set;
  }
 }

2、在需要验证的webService类里面添加验证属性
3、在需要验证的Web方法上添加标签  [SoapHeader("Credentail")]
 public class Login : System.Web.Services.WebService
 {
  public CredentialSoapHeader Credentail
  {
   get;
   set;
  }

  [WebMethod]
  [SoapHeader("Credentail")]
  public string HelloWorld()
  {
   this.VerifyCredential(this);
   return "Welcome " + this.Credentails.UserName;
  }
  /// <summary>
  /// 验证是否合法
  /// </summary>
  /// <param name="s"></param>
  private string VerifyCredential(Login s)
  {
   if (s.Credentails == null || s.Credentails.UserName == null || s.Credentails.UserPassword == null)
   {
    return "验证失败:无用户认证信息";
   }

   //在这里可以进一步进行自定义的用户验证 
   return "OK";
  }
 }
这样,在客户端代理实体调用该方法时,就需要提供一个CredentialSoapHeader 的对象了,在服务端的验证方法里,我们可以添加相应的身份验证机制。

原文地址:https://www.cnblogs.com/zhaoguan_wang/p/1270332.html