2012-02-10 43 views
0

我試圖與HTTP上下文中工作(與Httpcontext.current的幫助下)在Global.asax的Application_Start事件,那麼你將收到一個錯誤: - HttpContext.Current請求在此上下文中不可用HttpContext.Current申請「不可用」,同時運行「本地IIS Web服務器

該問題可以通過使用靜態構造函數輕鬆實現,該靜態構造函數在首先訪問對象時觸發。我們可以在Application_Beginrequest中保留一個標誌事件並輕鬆確定初始化應用程序的請求。

但在這種情況下,它能夠在每一個請求,這不需要我創造,我要創建或訪問的HttpContext。當前一旦

我的代碼如下: -

 `//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

有集成模式沒有HttpContext也不HttpRequest例如在App_Start。你必須解決這個問題。如果您確實需要根據第一次請求執行某些操作,請在global.asax中註冊新的BeginRequest處理程序,然後在完成後取消註冊。

相關問題