日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

ASP.NET(99):WebService之WebMethod参数介绍

發布時間:2023/12/15 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET(99):WebService之WebMethod参数介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、WebService的調試

net 2.0新建webservice為了安全考慮,默認關閉了Post和Get方法 。

讓其打開,可在Web.config文件的<system.web>下增加(如果已經存在就修改之)

<webServices>
    <protocols>
        <add name="HttpGet"/> <!--或<add name="HttpPost"/>-->
    </protocols>
</webServices>

Web服務定義如下:

[WebMethod]
public int Add(int i)
{
    return 33+i;
 }

通過URL訪問Web服務,HttpGet方式返回XML:
http://../WebServices1.asmx/Add?i=1
返回:

<?xml version="1.0"?>
<int xmlsns="..">34</int>

二、WebMethod屬性:

WebMethod有6個屬性:
.Description:是對webservice方法描述的信息。就像webservice方法的功能注釋,可以讓調用者看見的注釋。.EnableSession:指示webservice否啟動session標志,主要通過cookie完成的,默認false。.MessageName:主要實現方法重載后的重命名。.TransactionOption:指示 XML Web services 方法的事務支持。.CacheDuration:Web支持輸出高速緩存,這樣webservice就不需要執行多遍,可以提高訪問效率,.BufferResponse:配置WebService方法是否等到響應被完全緩沖完,才發送信息給請求端。普通應用要等完全被緩沖完才被發送的!

三、EnableSession屬性

指示webservice否啟動session標志,主要通過cookie完成的。默認為false。

[WebMethod(true)] //默認參數為EnableSession 
public string Login(string name)
{
    Context.Session["name"] = name;
    return name;
}
[WebMethod(EnableSession = true)]
public string GetName()
{
    if (Context.Session["name"] != null)
        return Context.Session["name"].ToString();
    else
        return "";
}

在客戶端,要在實例化了webservice代理類之后,要為它的CookieContainer 實例化一個 new CookieContainer(),這樣才能使用session存儲狀態多個頁面使用。

新類繼承引用的webservice,并給CookieContainer賦值。

public class WebService1:localhost.WebService
{
    private static System.Net.CookieContainer cookieContainer; 

    static WebService1()
    {
        cookieContainer = new System.Net.CookieContainer();//靜態初始化
    }

    public WebService1()
    {
        this.CookieContainer = cookieContainer;
    }
}

在各個頁面使用派生的WebService類,可以獲得同一個CookieContainer :

protected void btnLogin_Click(object sender, EventArgs e)
{
    WebService1 ws = new WebService1();
    ws.Login(txtName.Text);
}
protected void btnGetName_Click(object sender, EventArgs e)
{
    WebService1 ws = new WebService1();
    lblName.Text = ws.GetName();
}

四、MessageName屬性

主要實現方法重載后的重命名,在Soap消息中引用時,SOAP使用MessageName而非方法名。

在下面的示例中,MessageName 用于消除兩個 Add 方法的歧義。
通過Add訪問的是第一個方法,而通過Add2訪問的是第二個方法!

public class Calculator : WebService {
    // The MessageName property defaults to Add for this XML Web service method.
    [WebMethod]
    public int Add(int i, int j) {
        return i + j;
    }   
    [WebMethod(MessageName="Add2")]
    public int Add(int i, int j, int k) {
        return i + j + k;
    }   
  }

訪問:http://../WebServices1.asmx/Add2?i=1

五、WebService基于SOAPHeadear實現安全認證

1、首先自定義SoapHeader,需繼承自System.Web.Services.Protocols.SoapHeader

/// <summary>
///自定義的SoapHeader
/// </summary>
public class MySoapHeader : System.Web.Services.Protocols.SoapHeader
{
    public MySoapHeader()
    {
    }

    public MySoapHeader(string userName, string passWord)
    {
        this.UserName = userName;
        this.PassWord = passWord;
    }

    public string UserName {set;get;}

    public string PassWord { set; get; }
}

2、添加WebService:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebService : System.Web.Services.WebService
{
    //聲明Soap頭實例
    public MySoapHeader myHeader = new MySoapHeader();

    [System.Web.Services.Protocols.SoapHeader("myHeader")]
    [WebMethod]
    [SoapHeader(myHeader)]//用戶身份驗證的SOAP頭
    public string HelloWord()
    {
        //可以通過存儲在數據庫中的用戶與密碼來驗證
        if (myHeader.UserName.Equals("SoapHeader") & myHeader.PassWord.Equals("456789"))
        {
            return "調用服務成功!";
        }
        else
        {
            return "對不起,您沒有權限調用此服務!";
        }
    }
}

3、客戶端調用,設置SoapHeader;

localhost.WebService service = new localhost.WebService();

//將用戶名與密碼存入SoapHeader;
localhost.MySoapHeader header = new localhost.MySoapHeader();
header.UserName = "SoapHeader";
header.PassWord = "456789";
service.MySoapHeaderValue = header;
Console.WriteLine("設置SoapHeader:" + service.HelloWord());

//或者
Console.WriteLine("設置SoapHeader:" + service.HelloWord(header));

總結

以上是生活随笔為你收集整理的ASP.NET(99):WebService之WebMethod参数介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。