当创建cookie时,响应在此上下文中不可用
问题描述:
您好,我定义了一个类,用于通过接收到的来自用户的参数创建cookie。当我想添加cookie到上下文时,我收到一个异常。当创建cookie时,响应在此上下文中不可用
我的班级
public static class ManageCookies
{
public static void Create(string name, string value)
{
HttpCookie cookie = new HttpCookie(name);
cookie.Value = value;
cookie.Expires = DateTime.Now.AddYears(1);
HttpContext.Current.Response.Cookies.Add(cookie);
}
}
发生异常:响应是不是在这种情况下可用。
我知道它与执行当前子内的上下文相连接。 我建议我的函数将当前的HttpResponse作为参数传递给它!
public static class ManageCookies
{
public static void Create(string name, string value, HttpResponse response)
{
HttpCookie cookie = new HttpCookie(name);
cookie.Value = value;
cookie.Expires = DateTime.Now.AddYears(1);
response.Cookies.Add(cookie);
}
public static void PrePareForApplicationStart()
{
Create("somecookie", "somevalue", _context);
}
}
这是正确的方法吗?为什么?你有另一种方式吗?
更新:Oppps!使用这种方式仍然有第一个异常! :((帮助帮助
ManageCookies manager = new ManageCookies(this.Context);
manager.PrePareForApplicationStart();
我使用上面的代码发送HttpContext对象来定义的类它从Application_Start事件称为
和ManageCookies类更新如下:。
public class ManageCookies
{
private HttpContext _context;
public ManageCookies(HttpContext context)
{
this._context = context;
}
}
我使用这个变量(_context),以增加饼干!
答
您提供的代码是不是问题问题是你来自哪里调用它。如果你的响应后把它叫做是冲洗或FR OM比分配到处理您的请求的另一个线程 - 你可以得到各种各样的问题
在回应澄清萨德克:
这也正是这一点。应用程序启动仅在应用程序生存期内发生我想你希望这个cookie作为每个响应的一部分来传递。换句话说,ApplicationStart不适合做这件事。您可以将网页生命周期中任何时候做之前预渲染
是结束,我知道,但是使用在ApplicationStart事件这个方法就是一个例子。我想调用PrePareForApplicationStart方法为第一次应用程序运行创建必要的cookie!我的问题是上面的方法(创建)!谢谢亲爱的mfeingold – Sadegh 2010-04-04 14:50:28