gpt4 book ai didi

c# - ASP.NET HttpContext 项目在服务器上消失

转载 作者:太空宇宙 更新时间:2023-11-03 16:15:23 25 4
gpt4 key购买 nike

我们目前发现 HttpContext.Current.Items 的使用存在问题,开发人员的本地环境在服务器环境中没有显示任何问题(一切都按预期工作)我们突然丢失了项目放在里面(得到一个 NullReferenceException)。

我草拟了一些代码并在下面使用:

Global.asax 我们在 BeginRequest 初始化工厂:

protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Items["Key"] = new Factory();
}

BaseControl 中,我们有一个属性可以轻松检索工厂:

public Factory Factory
{
get { return HttpContext.Current.Items["Key"] as Factory; }
}

UserControl 中,我们通过基本属性使用它:

protected void Page_Load(object sender, EventArgs e)
{
Product p = Factory.CreateProduct();
}

环境信息:

  • 本地开发人员使用 IIS 7.5 和 8 以及 Sitecore 6.6 在 Windows 7 和 8 上运行
  • 服务器使用 IIS 7.5 和 Sitecore 6.6 运行 Windows Server 2008 R2

对于所有本地开发人员(我们正在与 6 人一起处理这个项目),上述代码没有问题。然而,一旦我们将代码部署到测试服务器,使用工厂中断的位置(即 HttpContext.Current.Items 为空)

最佳答案

当它的行为像您描述的那样时,我只能想象一种情况:在 Global.asax 文件中,测试服务器上的 Inherits 属性指向 Sitecore .Web.Application 直接省略你的代码执行。

你能再检查一下 Global.asax 文件是否以

开头吗
<%@Application Language='C#' Inherits="My.Assembly.Namespace.Global" %>

如果 Global.asax 在您的开发环境中发生了更改但尚未部署到测试环境中,则可能会发生这种情况。

如果不是问题,请尝试检查 Application_BeginRequest 是否在测试服务器上执行。它会给你一个答案,无论 Factory 是否从未被添加到 HttpContext.Current.Items 或者它是否在请求处理期间从 Items 中删除.

关于c# - ASP.NET HttpContext 项目在服务器上消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15948262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com