运行“本地IIS Web服务器”时,HttpContext.Current请求“不可用”

时间:2012-02-10 10:32:58

标签: asp.net-mvc-3

我试图在global.asax的application_start事件中使用http上下文(在Httpcontext.current的帮助下),然后您将收到一个错误: - HttpContext.Current请求在此上下文中不可用。

通过使用静态构造函数可以轻松地解决问题,在首先访问对象时会触发该构造函数。我们可以在Application_Beginrequest事件中保留一个标志,并轻松确定初始化应用程序的请求。

但在这种情况下,它会在每次请求时创建,这对我来说并不是必需的。我想创建或访问Httpcontext.current一次

我的守则如下: -

        `//var context = new HttpContextWrapper(HttpContext.Current);
        //var routeData = RouteTable.Routes.GetRouteData(context) ?? new RouteData();
        //var requestContext = new RequestContext(context, routeData);
        //var urlHelper = new UrlHelper(requestContext);
        //var url = urlHelper.Action("Home", "Index");

        var httpContext = new HttpContextWrapper(HttpContext.Current);
        UrlHelper urlHelper = new UrlHelper(new RequestContext(httpContext, new RouteData()));
        if (urlHelper.RequestContext.HttpContext.Request.IsLocal)
        {

        }
        //if (((requestContext.HttpContext).Request).IsLocal)
        //{

        //}`

1 个答案:

答案 0 :(得分:1)

集成模式下HttpContext中没有HttpRequestApp_Start个实例。你必须解决这个问题。如果您确实需要在第一次请求时执行某些操作,请在global.asax中注册新的BeginRequest处理程序,然后在完成后取消注册。