如何在ASP.NET中共享使用“响应”或“请求”的功能?

时间:2011-01-05 18:57:18

标签: asp.net cookies request httprequest httpresponse

我想要一个实用程序功能,有条件地在我的网站中的多个页面上更新我的请求和响应。

使用标准.CS类似乎不允许我访问这些对象。我怎么能(通俗地说)创建一个实用程序函数来检查cookie并在多个页面上更新它?

4 个答案:

答案 0 :(得分:1)

使用HttpContext.Current.Request和HttpContext.Current.Response

答案 1 :(得分:1)

你总能通过

获得这些东西
System.Web.HttpContext.Current.Request

System.Web.HttpContext.Current.Response

HttpContext ClassCurrent Property

  

封装有关单个HTTP请求的所有特定于HTTP的信息。


要在整个网站中管理一些cookie值,我建议您创建一个所有Pages继承的BasePage类并在那里进行检查:

public class BasePage : System.Web.UI.Page
{
    protected override void OnPreRender(EventArgs e)
    {
        UpdateCookie();
        base.OnPreRender(e);
    }
}

在您的MasterPage中执行相同操作:

public class SiteMasterPage : MasterPage
{
    protected override void OnPreRender(EventArgs e)
    {
        UpdateCookie();
        base.OnPreRender(e);
    }
}

public static void UpdateCookie()
{
    HttpContext context = System.Web.HttpContext.Current;
    HttpCookie cookie = context.Response.Cookies.Get("Update") 
        ?? new HttpCookie("Update");        

    int value = 0;
    int.TryParse(cookie.Value, out value);
    value++;

    cookie.Expires = DateTime.Now.AddDays(30);
    cookie.Value = value.ToString();
    context.Response.Cookies.Set(cookie);
}

答案 2 :(得分:0)

使用完全限定的命名空间:

System.Web.HttpContext.Current.Request

System.Web.HttpContext.Current.Response

- 或 -

using System.Web.HttpContext.Current;

然后您应该能够在整个课程中访问请求/响应。

答案 3 :(得分:0)

有几种方法可以做到这一点。其他人已经提到用System.Web.HttpContext.Current这样做,但我认为(猜测我认为你的意图是这样的)在主页上加载的方法上执行此操作是一个更好的主意。