日期:2014-05-16  浏览次数:20884 次

AJAXPro 关于session和application的操作问题


1、asp.net 的C#代码部分

          ‘[AjaxPro.AjaxMethod]’这句是关键,函数或方法写法没什么特别的地方,只是要使用这句声明这个函数是由AJAX.NET在页面异步请求的,总之记住要通过AJAX获得数据的后台函数就使用[AjaxPro.AjaxMethod]来声明一下。

另外,在AJAX.NET中如果处理函数需要对SESSION进行操作,‘[AjaxPro.AjaxMethod]’需要改成‘[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]’在 [AjaxPro.AjaxMethod(AjaxPro.……)]  的‘…… ’部分ajax.net还提供了其他很多方法,可以处理一些特殊的请求。
还有一点注意,如果使用Application,直接读取或写入Application也是不行的,需要使用HttpContext.Current.Application,同样对 Request的访问也需要使用HttpContext.Current.Request。原因是直接使用的Application 或Request等 都是由Page类继承下来的,而用Ajax.net对后台方法访问的时候,这些方法并不属于Page类。但是Session比较特殊,使用 HttpContext.Current.Session仍然不能访问,必须使用上面一段所用的方法并且直接就用Session就行。

    public partial class Jetflow : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //注册ajax
            if (!Page.IsPostBack)
            {
                AjaxPro.Utility.RegisterTypeForAjax(typeof(V3WEB.htm.Test.Jetflow));     ----注册方式要写名命名空间
            }
            Application["CompanyHtml"] = "hello";
        }

        //获得显示公司的网页文件
        [AjaxPro.AjaxMethod]
        public string getCompanyHtml()
        {
            string _companyname = "jetflow";
            if (HttpContext.Current.Application["CompanyHtml"] != null)
            {
                _companyname = HttpContext.Current.Application["CompanyHtml"].ToString();       -----读写全局变量要用HttpContext.Current.Application方式
            }
            return _companyname;
        }

        //判断用户名密码是否正确
        [AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]        //  读写Session: 加上此句才可读写session
        public int isRight(string userID, string userPwd)
        {
     &nb