Ajax中session使用

来源:互联网 发布:c语言图像处理函数 编辑:程序博客网 时间:2024/06/16 00:59

首先,从声明Web Service说起

将 WebMethod 属性 (Attribute) 附加到 Public 方法表示希望将该方法公开为 XML Web services 的一部分。您还可以使用该属性 (Attribute) 的属性 (Property) 进一步配置 XML Web

services 方法的行为。有关更多信息,请参见托管代码中的 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 窗体客户端可以通过在自己的会话状态中保存 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进行操作即可。

原创粉丝点击