HttpContext Cookie - c#

if (HttpContext.Current.Request.Cookies.AllKeys.Contains("myCookie") &&
    !String.IsNullOrEmpty(HttpContext.Current.Request.Cookies["myCookie"].Value))
{
    HttpCookie myCookie = HttpContext.Current.Request.Cookies["myCookie"];
}

这段代码有什么问题吗?每隔一段时间,我们的生产网站就会在第4行获得空引用异常。我无法在测试中重现此异常。

参考方案

您确定在第4行而不是第一行看到异常吗?您的代码看起来不错,但有一个例外:HttpContext.Current有时为null,这应该在您的第一行代码中引起异常。

最常见的情况是您在后台线程中运行代码而不是在其上执行请求的线程。例如,如果您自己创建一个线程,或者在传递给BeginXXX异步方法调用的回调中执行代码,则会得到一个空的HttpContext.Current

发生这种情况是因为HttpContext.Current与当前正在执行请求的线程相关联。在不同的线程上,框架无法知道您要使用哪个请求。

有多种方法可以解决此问题,例如.NET的BackgroundWorker可以将上下文传播到另一个线程。 ASP.NET中的“异步页面”支持也将正确传播上下文。

因此,您有两个选择:要么重写所有异步代码以使用诸如BackgroundWorker或“异步页面”这样的上下文传递异步机制,要么在尝试访问HttpContext.Current==null的任何属性之前更改代码以检查HttpContext.Current

ddl在服务器中未更新-asp.net - javascript

我在ASP.NET c#上工作。我有一个DropDownList。 (runat =“ server”)在$ {document).ready上,我更新了它的值:$(document).ready(function () { document.getElementById("ddl").value = "abc"; ……

更改已经存在的cookie的cookie值 - c#

我有一个名为SurveyCookie的cookie。像这样创建:var cookie = new HttpCookie("SurveyCookie"); cookie.Values["surveyPage"] = "1"; cookie.Values["surveyId"] = …

ASP.NET-如何更改JSON序列化的方式? - javascript

我正在使用ASP.NET通过以下查询返回Json文件:public ActionResult getTransactionTotals(int itemID) { DBEntities db = new DBEntities(); var query = from trans in db.Transactions // Linq query removed …

ASP.NET MVC中应为DataTable返回哪种数据? - javascript

我想为DataTable中的每个页面创建动态加载信息。我正在尝试遵循以下示例:https://www.datatables.net/manual/server-sidehttps://www.datatables.net/manual/data来自示例的代码:$('#example').DataTable( { serverSide: t…

Asp.Net:在服务器端还原DropDownList的客户端SelectedItem - c#

因此,我的页面上有一个dropDownList,其中包含数百个项目。用户可以通过在文本框中键入一些文本来过滤此DDL。然后对DDL进行相应的过滤(所有不包含输入文本的项目都将通过JavaScript删除)。然后,用户选择他的项目并按下按钮。通常,这将导致错误,因为DDL已更改并且ASP验证了PostBack数据。但是,使用EnableEventValidat…