C# 响应在此上下文中不可用

C# 响应在此上下文中不可用,c#,.net,asp.net-mvc,solrnet,C#,.net,Asp.net Mvc,Solrnet,我有问题。本地一切正常,但在生产服务器中,它总是抛出异常“响应在此上下文中不可用”。有什么问题吗?我注意到,由于global.asax的一些更改,很多人都遇到了这个问题。下面是global.asax的代码,它是与应用程序启动相关的部分 protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterRoutes(RouteTable.Routes);

我有问题。本地一切正常,但在生产服务器中,它总是抛出异常“响应在此上下文中不可用”。有什么问题吗?我注意到,由于global.asax的一些更改,很多人都遇到了这个问题。下面是global.asax的代码,它是与应用程序启动相关的部分

    protected void Application_Start() {
        AreaRegistration.RegisterAllAreas();
        RegisterRoutes(RouteTable.Routes);
        Application["SystemUser"] = TUser.GetUserByIdentifier("system").UID;
        InitializeSolrInstances();
        SearchIndexer.DoIndex();
        StartRatingTimer();
        SolrManager.RecalculateMostRequested();
    }

    private static void InitializeSolrInstances() {
        SolrConfigurationManager.InitSolrConnection<OfferItemPresenter>(Resources.ApplicationResources.SolrServiceURL + "/offer");
        SolrConfigurationManager.InitSolrConnection<SavedQueryItemPresenter>(Resources.ApplicationResources.SolrServiceURL + "/savedquery");
        SolrConfigurationManager.InitSolrConnection<TopProductsPresenter>(Resources.ApplicationResources.SolrServiceURL + "/topproducts");
        SolrConfigurationManager.InitSolrConnection<TopSellersPresenter>(Resources.ApplicationResources.SolrServiceURL + "/topsellers");
        SolrConfigurationManager.InitSolrConnection<MostRequestedItemPresenter>(Resources.ApplicationResources.SolrServiceURL + "/mostrequested");
        SolrConfigurationManager.InitSolrConnection<MostRequestedQuery>(Resources.ApplicationResources.SolrServiceURL + "/requestedquery");
    }

    private void StartRatingTimer() {
        _LastRatingRenewedTime = DateTime.Now;
        DateTime CurrentTime = DateTime.Now;
        DateTime StartTime = new DateTime(2011, 1, 1);
        GlobalSettings.ReIndexMainSolrCores(StartTime, CurrentTime);
        Timer OfferAndUserRatingRenewerTimer = new Timer() {
            /*Timer interval for 24 hours*/
            Interval = 24 * 60 * 60 * 1000, Enabled = true };
        OfferAndUserRatingRenewerTimer.Elapsed += new ElapsedEventHandler(OfferAndUserRatingRenewerTimer_Elapsed);
    }
    public void OfferAndUserRatingRenewerTimer_Elapsed(Object Sender, ElapsedEventArgs e) {
        GlobalSettings.ReIndexMainSolrCores(_LastRatingRenewedTime, e.SignalTime);
        _LastRatingRenewedTime = e.SignalTime;
    }
受保护的无效应用程序\u Start(){
RegisterAllAreas();
注册地址(RouteTable.Routes);
应用程序[“系统用户”]=TUser.GetUserByIdentifier(“系统”).UID;
初始化seSolrInstances();
SearchIndexer.DoIndex();
启动计时器();
solrmager.recreactemostrequested();
}
私有静态void InitializeSolrInstances(){
SolrConfigurationManager.InitSolrConnection(Resources.ApplicationResources.SolrServiceURL+“/offer”);
SolrConfigurationManager.InitSolrConnection(Resources.ApplicationResources.SolrServiceURL+“/savedquery”);
SolrConfigurationManager.InitSolrConnection(Resources.ApplicationResources.SolrServiceURL+“/topproducts”);
SolrConfigurationManager.InitSolrConnection(Resources.ApplicationResources.SolrServiceURL+“/topsellers”);
SolrConfigurationManager.InitSolrConnection(Resources.ApplicationResources.SolrServiceURL+“/mostrequested”);
SolrConfigurationManager.InitSolrConnection(Resources.ApplicationResources.SolrServiceURL+“/requestedquery”);
}
私有void启动计时器(){
_LastRatingRenewedTime=DateTime.Now;
DateTime CurrentTime=DateTime.Now;
DateTime StartTime=新的日期时间(2011,1,1);
GlobalSettings.ReIndexMainSolrCores(开始时间,当前时间);
计时器OFFERANDUSERRATINGRENEVERTIMER=新计时器(){
/*计时器间隔为24小时*/
间隔=24*60*60*1000,启用=true};
OFFERANDUSERRATINGRENEVERTIMER.EASSED+=新的ElapsedEventHandler(OFFERANDUSERRATINGRENEVERTIMER_EASSED);
}
公开无效OfferUserRatingRenewartimer_(对象发送方,ElapsedEventArgs e){
GlobalSettings.ReIndexMainSolrCores(_LastRatingRenewedTime,例如SignalTime);
_LastRatingRenewaedTime=e.SignalTime;
}
我根本不使用HttpContext的响应或请求属性。既不在全局asax本身中,也不在要调用的方法中。帮帮我

这就是它所显示的。 ` “/”应用程序中出现服务器错误

响应在此上下文中不可用

描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

异常详细信息:System.Web.HttpException:响应在此上下文中不可用

源错误:

在执行当前web请求期间生成了未经处理的异常。有关异常的起源和位置的信息可以使用下面的异常堆栈跟踪来识别

堆栈跟踪:

[HttpException (0x80004005): Response is not available in this context.]
   System.Web.Util.HttpEncoder.get_Current() +11406684
   System.Web.HttpUtility.UrlEncode(String str, Encoding e) +137
   SolrNet.Impl.SolrConnection.<Get>b__0(KeyValuePair`2 input) +89
   SolrNet.Utils.<Select>d__1a`2.MoveNext() +612
   SolrNet.Utils.Func.Reduce(IEnumerable`1 source, TResult startValue, Accumulator`2 accumulator) +393
   SolrNet.Impl.SolrConnection.Get(String relativeUrl, IEnumerable`1 parameters) +908
   SolrNet.Impl.SolrQueryExecuter`1.Execute(ISolrQuery q, QueryOptions options) +195
   SolrNet.Impl.SolrBasicServer`1.Query(ISolrQuery query, QueryOptions options) +176
   SolrNet.Impl.SolrServer`1.Query(ISolrQuery query, QueryOptions options) +176
   TebeComSearchEngine.SolrManager.RecalculateMostRequested() in SolrManager.cs:77
   TebeCom.MvcApplication.Application_Start() in Global.asax.cs:101

[HttpException (0x80004005): Response is not available in this context.]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +4043621
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +191
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +352
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +407
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +375

[HttpException (0x80004005): Response is not available in this context.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11612256
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4842149`
[HttpException(0x80004005):响应在此上下文中不可用。]
System.Web.Util.HttpEncoder.get_Current()+11406684
System.Web.HttpUtility.UrlEncode(字符串str,编码e)+137
SolrNet.Impl.SolrConnection.b__0(KeyValuePair`2输入)+89
SolrNet.Utils.d_u1a`2.MoveNext()+612
SolrNet.Utils.Func.Reduce(IEnumerable`1源,TResult startValue,累加器`2累加器)+393
SolrNet.Impl.SolrConnection.Get(String relativeUrl,IEnumerable`1参数)+908
SolrNet.Impl.SolrQueryExecuter`1.Execute(isolQuery q,QueryOptions选项)+195
SolrNet.Impl.SolrBasicServer`1.Query(ISolrQuery查询,查询选项)+176
SolrNet.Impl.SolrServer`1.Query(ISolrQuery查询,查询选项)+176
solrmanger.cs中的tebecomsearchine.solrmanger.recreactemostrequested():77
Global.asax.cs:101中的TebeCom.mvcapapplication.Application_Start()
[HttpException(0x80004005):响应在此上下文中不可用。]
System.Web.HttpApplicationFactory.confureStartCalledForIntegratedMode(HttpContext上下文,httpapplicationapp)+4043621
System.Web.HttpApplication.registereventsubscriptionswithis(IntPtr-appContext,HttpContext-context,MethodInfo[]handlers)+191
System.Web.HttpApplication.InitSpecial(HttpApplicationState,MethodInfo[]处理程序,IntPtr-appContext,HttpContext-context)+352
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr-appContext,HttpContext-context)+407
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)+375
[HttpException(0x80004005):响应在此上下文中不可用。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext上下文)+11612256
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext上下文)+141
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequestWR,HttpContext上下文)+4842149`
“响应在此上下文中不可用”。有什么问题吗

您正在IIS7集成应用程序池模式下运行此功能,而不是在经典模式下运行。在集成模式下,您无法访问
应用程序\u Start
中的HttpResponse,任何访问它的尝试都将失败


下面是一个例子,它涵盖了类似的情况,但是使用了HttpRequest。

在对SolrNet代码进行了大量挖掘和查找之后,他们似乎没有做错任何事情。此外,HttpUtility.UrlEncode在没有HttpContext的代码(例如控制台应用程序)中应该可以正常工作,它确实可以

然而,正如他在评论达林的回答时指出的:

实际上,它似乎是一个bug。从…起 反射器,实际代码似乎是 “如果(null!=当前值&&null!”= 当前。响应&&…“其中 current是当前http上下文。问题 下面是getter抛出的响应 异常,而不是返回null

而不是扔