C# ';context.Request';引发了类型为';System.Web.HttpException';
我试图在Global.asax应用程序_Start()事件中使用access HTTPContext 访问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
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
}