【问题标题】:ASP.NET Request is not available in this contextASP.NET 请求在此上下文中不可用
【发布时间】:2012-02-06 04:24:21
【问题描述】:

当我尝试打开网站时,我遇到了这个问题,我不知道它有什么问题。 我已经用它编辑了堆栈跟踪

“/”应用程序中的服务器错误。 请求在此上下文中不可用 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 异常详细信息:System.Web.HttpException:请求在此上下文中不可用 源错误: 在执行当前 Web 请求期间生成了未处理的异常。可以使用异常堆栈跟踪来识别有关异常来源和位置的信息 以下。 堆栈跟踪: [HttpException (0x80004005): 请求在此上下文中不可用] System.Web.HttpContext.get_Request() +8806688 labs.shared.config.CFGConstants.InitializeFromHttpContext() +42 labs.shared.config.CFGConstants..ctor() +722 labs.shared.config.CFGConstants.Get() +108 labs.site.framework.FWStateHelper.OnApplicationStart(HttpApplication 应用程序)+12 labs.site.Global.Application_Start(对象发送者,EventArgs e)+5 [HttpException (0x80004005): 请求在此上下文中不可用] System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext 上下文,HttpApplication 应用程序)+2724290 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext 上下文,MethodInfo[] 处理程序)+128 System.Web.HttpApplication.InitSpecial(HttpApplicationState 状态,MethodInfo[] 处理程序,IntPtr appContext,HttpContext 上下文)+188 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +295 System.Web.HttpApplicationFactory.GetPipelineApplicationInstance(IntPtr appContext, HttpContext context) +56 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +231 [HttpException (0x80004005): 请求在此上下文中不可用] System.Web.HttpRuntime.FirstRequestInit(HttpContext 上下文) +8909915 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext 上下文)+85 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest WR,HttpContext 上下文)+333

【问题讨论】:

  • 这是突然发生的吗?
  • 内部有异常吗?

标签: asp.net


【解决方案1】:

您可能正在Application_Start 事件处理程序中做一些事情。在 IIS 7 中,当时没有可用的 HttpRequest,您不应依赖于初始化应用程序的请求。

如果您在应用程序生命周期的早期确实需要请求内容,则需要捕获第一个通过的请求。

【讨论】:

  • 我在看帖子mvolo.com/blogs/serverside/archive/2007/11/10/… 我相信它描述了同样的问题谢谢:)
  • 请记住,IIS7 中有一些机制可以在回收后强制运行您的应用程序,而不发出请求。然后应用程序将启动,但一个请求可能很长一段时间都没有到达。
【解决方案2】:

您可能希望包含您似乎已切断的堆栈跟踪。描述不言自明,无法在您尝试使用它的地方使用 Request。我怀疑您已尝试访问 Application_BeginRequest 处理程序中的 Request 对象(我认为在初始化 Session 和 Request 之类的东西之前调用它。我认为 Application_AcquireRequestState 是最早的 Request 可用...

从您提供的堆栈跟踪中可以看出,代码在Application_Start 中,尽管与上述相同。你想在这里做什么?可以在后期进行吗?它实际上从 Request 对象中得到了什么,是否可以通过其他方式获得这些信息?

您肯定需要以某种方式移动您的代码...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    相关资源
    最近更新 更多