Asp.net WebService入門執行個體

來源:互聯網
上載者:User
我的廣告單元,有空點一下哦,謝謝!

  Webservice它是一種構建應用程式的普遍模型,可以在任何支援網路通訊的作業系統中實施運行;它是一種新的web應用程式分支,是自包含、自描述、模組化的應用,發行就緒、定位、通過web調用。Web
Service是一個應用組件,它邏輯性的為其他應用程式提供資料與服務.各應用程式通過網路通訊協定和規定的一些標準資料格式(Http,XML,Soap)來訪問Web
Service,通過Web Service內部執行得到所需結果.Web Service可以執行從簡單的請求到複雜商務處理的任何功能。一旦部署以後,其他Web
Service應用程式可以發現並調用它部署的服務。

  在Asp.net中實現一個WebService其實是一個非常簡單的事情,跟建立網站一樣,需要注意和瞭解的的是如何讓自己的Webservice更加健壯,更加安全,穩定等。

  本文主要講2個知識,一個是如何搭建WebService,一個是如何加入SOAP頭認證,增加安全性。

  好第一個:

  ①開啟VS--建立項目--選擇Web--選擇Asp.net Web服務應用程式

  

  ②好了,一個WebService就成功了,你可以直接運行,用其他程式調用HelloWorLd方法了。

  ③你可以寫自己的方法,帶參數等等。

  
  Webservice好實現,但是如何做好存取權限是重點,不然所有程式都可以調用你的Webservice了,很危險。WebService的安全性有很多,soap頭認證,Token口令認證,ssl認證,Form認證,以及自己構造參數認證等等。

  
  這裡採用soap頭認證方式實現。

  ①首先我們構造一個認證類,注意類繼承紫SoapHeader。認證類中放入使用者名稱和密碼。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace AMSendMsg
{
public class Certificate : System.Web.Services.Protocols.SoapHeader
{
public Certificate() { }
/// <summary>
/// 使用者名稱
/// </summary>
public string UserName { get; set; }

/// <summary>
/// 密碼
/// </summary>
public string PassWord { get; set; }
}
}

  
  ②WebService方法    

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using CJ;
using System.Data;
using System.Configuration;

namespace AMSendMsg
{

[WebService(Namespace = "http://www.chinacloudtech.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]

public class AMSendMsg : System.Web.Services.WebService
{
public Certificate cer = new Certificate();


[System.Web.Services.Protocols.SoapHeader("cer")]
[WebMethod]
public string SendMsg(string Sender, string SenderPwd, string Receiver, string Subject, string Content, bool IsHtml)
{
try
{
CJ_DevelopHelper.SqlConn_Str = ConfigurationManager.AppSettings["AMDBConnect"].ToString();

//首先驗證是否有許可權調用該功能
CJ_DevelopHelper.SqlStr = "select * from WebServiceUser where username='" + Server.HtmlEncode(cer.UserName.Replace("'", "")) + "'";

}
}
}

  

  ③注意的地方,WebService中首先擷取使用者傳遞過來的頭認證擷取使用者名稱和密碼,也就是cer.UserName,cer.PassWord擷取後,到系統資料庫中驗證是否該認證是正確的,並且有許可權能夠調用該方法。這裡不得不說的是,我實現準備了一張WebService許可權控製表,規定那個使用者可以調用那個方法,表結構很簡單。

  username 認證名,password 密碼,methods 可調用方法。然後每個用戶端要像使用這個方法,必須先申請一個認證Key,其實就是向表中插入一條資料。然後使用申請的key來訪問這個WebService方法。

  ④這是我的一個安全驗證思路,其實可以再次擴充,例如商定密碼編譯演算法,加密soap頭;對於b/s的使用可以採用機器碼作為password等等

  ⑤用戶端調用    

private void button1_Click(object sender, EventArgs e)
{
EPWS.AMSendMsgSoapClient sc = new EPWS.AMSendMsgSoapClient();
EPWS.Certificate cer = new EPWS.Certificate();
cer.UserName = "xxx";
cer.PassWord = "xxxxx";
MessageBox.Show(sc.SendMsg(cer, "", "", "", "", "xx<font color=red>xxxxx</font>", true));
}

  

這個只是一個簡單的入門例子,也是比較常用的認證方法。大家有更好方式的可以交流下哦。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.