C# ';context.Request';引发了类型为';System.Web.HttpException';

C# ';context.Request';引发了类型为';System.Web.HttpException';,c#,.net,asp.net-web-api,.net-4.5,httpcontext,C#,.net,Asp.net Web Api,.net 4.5,Httpcontext,我试图在Global.asax应用程序_Start()事件中使用access HTTPContext 访问context.Request时,我得到'context.Request'引发了类型为'System.Web.HttpException'异常的异常 在本例中,context.Request不是null,而是它的抛出异常 我使用以下代码来确定请求属性是否存在: context.GetType().GetProperty("Request"); 我得到了以下回应。 {System.Web.H

我试图在Global.asax应用程序_Start()事件中使用access HTTPContext

访问
context.Request
时,我得到
'context.Request'引发了类型为'System.Web.HttpException'
异常的异常

在本例中,
context.Request
不是null,而是它的抛出异常

我使用以下代码来确定
请求
属性是否存在:

context.GetType().GetProperty("Request");
我得到了以下回应。

{System.Web.HttpRequest Request}
    Attributes: None
    CanRead: true
    CanWrite: false
    CustomAttributes: Count = 0
    DeclaringType: {Name = "HttpContext" FullName = "System.Web.HttpContext"}
    GetMethod: {System.Web.HttpRequest get_Request()}
    IsSpecialName: false
    MemberType: Property
    MetadataToken: 385876876
    Module: {System.Web.dll}
    Name: "Request"
    PropertyType: {Name = "HttpRequest" FullName = "System.Web.HttpRequest"}
    ReflectedType: {Name = "HttpContext" FullName = "System.Web.HttpContext"}
    SetMethod: null

I am not sure how to confirm if context.Request exists and is not null ?
发件人:

如果在HttpRequest对象不可用时尝试使用此属性,ASP.NET将引发异常。例如,在Global.asax文件的Application_Start方法中,或者在从Application_Start方法调用的方法中,都是如此。当时还没有创建HTTP请求

Application\u Start
并不用于处理特定的请求,因此您需要将正在执行的操作移动到另一个事件的处理程序中,如
BeginRequest

public class Global : HttpApplication
{
   private static HttpRequest initialRequest;

   static Global()
   {
      initialRequest = HttpContext.Current.Request;       
   }

   void Application_Start(object sender, EventArgs e)
   {
      //access the initial request here

    }

您可以在此处使用应用程序启动事件。静态类型是在其HTTPContext中使用请求创建的,允许您在应用程序启动事件中立即存储和重用它。

这可能表示您正在IIS 7下以集成模式运行。另外,您正在响应哪个事件?@ScottHannen:我正在使用
Application\u Start()
event。在这里面,我使用
HTTPContext.Current.Request
来提取调用方代理。您试图从请求上下文读取哪个属性?
public class Global : HttpApplication
{
   private static HttpRequest initialRequest;

   static Global()
   {
      initialRequest = HttpContext.Current.Request;       
   }

   void Application_Start(object sender, EventArgs e)
   {
      //access the initial request here

    }