在Asp.net Ajax中使用Session

來源:互聯網
上載者:User

 

首先,從聲明Web Service說起

將 WebMethod 屬性 (Attribute) 附加到 Public 方法表示希望將該方法公開為 XML Web services 的一部分。您還可以使用該屬性 (Attribute) 的屬性 (Property) 進一步配置 XML Web

services 方法的行為。有關更多資訊,請參見Managed 程式碼中的 XML Web services 的代碼模型。

WebMethod 屬性 (Attribute) 提供以下屬性 (Property):

BufferResponse
WebMethod 屬性 (Attribute) 的 BufferResponse 屬性 (Property) 啟用對 XML Web services 方法響應的緩衝。當設定為 true(預設設定)時,ASP.NET 在將響應向下發送到用戶端之前對整

個響應進行緩衝。緩衝非常有效,它通過最小化輔助進程和 IIS 進程之間的通訊來協助提高效能。當設定為 false 時,ASP.NET 以 16KB 的塊區緩衝響應。通常,只有在不想將響應的全部內容

一次緩衝到記憶體時,才將該屬性 (Property) 設定為 false。例如,您在反寫一個集合,該集合正在以流的形式從資料庫輸出其項。除非另外指定,預設值為 true。

CacheDuration
WebMethod 屬性 (Attribute) 的 CacheDuration 屬性 (Property) 啟用對 XML Web services 方法結果的緩衝。ASP.NET 將緩衝每個唯一參數集的結果。該屬性 (Property) 的值指定 ASP.NET

應該對結果進行多少秒的緩衝處理。值為零,則禁用對結果進行緩衝。除非另外指定,預設值為零。

Description
WebMethod 屬性 (Attribute) 的 Description 屬性 (Property) 提供 XML Web services 方法的說明,該說明將顯示在服務協助頁上。除非另外指定,預設值為空白字串。

EnableSession
WebMethod 屬性 (Attribute) 的 EnableSession 屬性 (Property) 啟用 XML Web services 方法的工作階段狀態。一旦啟用,XML Web services 就可以從 HttpContext.Current.Session 中直接訪

問工作階段狀態集合,或者,如果它是從 WebService 基類繼承的,則可以使用 WebService.Session 屬性來訪問工作階段狀態集合。除非另外指定,預設值為 false。

MessageName
WebMethod 屬性 (Attribute) 的 MessageName 屬性 (Property) 使 XML Web services 能夠唯一確定使用別名的重載方法。除非另外指定,預設值是方法名稱。當指定 MessageName 時,結果

SOAP 訊息將反映該名稱,而不是實際的方法名稱。

TransactionOption
WebMethod 屬性 (Attribute) 的 TransactionOption 屬性 (Property) 使 XML Web services 方法可以作為事務的根對象參與。雖然可以將 TransactionOption 屬性 (Property) 設定為

TransactionOption 枚舉的任意值,但 XML Web services 方法僅有兩個可能的行為:它不參與事務(Disabled、NotSupported、Supported)或它建立一個新事務(Required、RequiresNew)。

除非另外指定,預設值為 TransactionOption.Disabled。

看到這裡其實在Asp.net Ajax中使用Session其實很簡單。而且只要是調用同一個Application的網站,WebService服務都可以這樣,不僅僅限於Asp.net Ajax實現。

關於EnableSession 屬性
屬性值 如果為 XML Web services 方法啟用工作階段狀態,則為 true。預設為 false。
為了將工作階段狀態儲存在 ASP.NET HttpSessionState 對象中,XML Web services 必須繼承自 WebService 和應用於 XML Web services 方法的 WebMethodAttribute(將 EnableSession 屬性

(Property) 設定為 true)。如果 XML Web services 方法不需要工作階段狀態,則禁用它即可提高效能。
XML Web services 用戶端由 XML Web services 返回的 HTTP cookie 唯一標識。為了使 XML Web services 維護用戶端的工作階段狀態,用戶端必須保持 Cookie。用戶端可以通過在調用 XML Web

services 之前建立 CookieContainer 的新執行個體並將其分配給代理類的 CookieContainer 屬性 (Property) 來接收 HTTP Cookie。若需在代理類執行個體超出範圍時維護工作階段狀態,用戶端必須在

XML Web services 調用之間保持 HTTP Cookie。例如,Web Form用戶端可以通過在自己的工作階段狀態中儲存 CookieContainer 來保持 HTTP Cookie。因為並非所有 XML Web services 都使用會話

狀態,因而並不總是要求用戶端使用用戶端代理的 CookieContainer 屬性 (Property),所以 XML Web services 文檔應該說明是否使用工作階段狀態。

執行個體代碼:

webservice.cs——————————————————————————————

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Services;

/// <summary>
/// WebService 的摘要說明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class WebService : System.Web.Services.WebService {

    public WebService () {

        //如果使用設計的組件,請取消注釋以下行
        //InitializeComponent();
    }

    [WebMethod(true)]
    public string HelloWorld() {
        Session["dddddd"] = Session["dddddd"].ToString() + "xingmai";
        return Session["dddddd"].ToString();
    }
   
}

aspx———————————————————————————————————

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestWebService.aspx.cs" Inherits="TestWebService" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>無標題頁</title>
<script language="javascript" type="text/javascript">
// <!CDATA[

function Button1_onclick() {
    WebService.HelloWorld(ddddd);
   
}

function ddddd(result)
{
    alert(result);
}

// ]]>
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        &nbsp;<asp:ScriptManager ID="ScriptManager1" runat="server">
            <Services>
                <asp:ServiceReference Path="WebService.asmx" />
            </Services>
        </asp:ScriptManager>
   
    </div>
        <input id="Button1" type="button" value="button" onclick="return Button1_onclick()" />
    </form>
</body>
</html>

aspx.cs————————————————————————————————

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class TestWebService : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Session["dddddd"] = "1234567";
    }
}

如果使用頁面靜態方法調用session更簡單。
直接從HttpContext.Current.Session進行操作即可。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.