C# Web Service 身份驗證

ForTechnology發表於2013-03-20
 第一種方案:通過 SOAP Header

  首先需要我們自己去實現一個有身份驗證資訊的類,這個類繼承System.Web.Services.Protocols.SoapHeader,而且定義兩個成員變數,一個為UserName,一個為PassWord.

  public class MySoapHeader:SoapHeader

  {

  public string UserName

  {

  get;

  set;

  }

  public string PassWord;

  {

  get;

  set;

  }

  }

  也可以在此類中加入驗證方法,當然需要看您專案的具體規劃

  接下來是Web Service的寫法

  程式碼

  public class WebService : System.Web.Services.WebService

  {

  public WebService()

  {

  //如果使用設計的元件,請取消註釋以下行

  //InitializeComponent();

  }

  public MySoapHeader header;

  ////定義使用者身份驗證類變數header

  [WebMethod(Description = "使用者驗證測試")]

  [System.Web.Services.Protocols.SoapHeader("header")]//使用者身份驗證的soap頭

  public string HelloWorld()

  {

  string userName = header.UserName;

  string passWord = header.PassWord;

  return "Hello World";

  //加入驗證許可權的方法,如果之前的SOAPHeader中已經有方法這裡可以直接呼叫

  }

  }

  客戶端呼叫時的程式碼比較簡單:

  程式碼

  com.WebService test = new com.WebService();//你的web Service

  MySoapHeader Header = new MySoapHeader();//web引用建立soap頭物件

  //設定soap頭變數

  Header.UserName = "Zane";

  Header.PassWord = "Yao";

  test.MySoapHeaderValue = Header;

  //呼叫web 方法

  Response.Write(test.HelloWorld());

  這樣就完成了~

  第二個方案: 將web服務程式設為整合windows身份驗證,當然需要將匿名訪問關閉,

  客戶端web引用程式碼

  Test.WebReference.Service wr = new Test.WebReference.Service(); //生成web service例項

  wr.Credentials = new NetworkCredential("使用者名稱","密碼");

  Response.Write(wr.HelloWorld()); //呼叫web service方法

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25897606/viewspace-756654/,如需轉載,請註明出處,否則將追究法律責任。

相關文章