这让我发疯。我已经在 Web 窗体应用程序上实现了 Web.Routing。该应用程序工作正常,然后莫名其妙地(至少目前)抛出以下错误消息:
你调用的对象是空的。在 System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext) 在 System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context) 在 System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e) 在 System.Web。 HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
此错误是间歇性的,并且在该站点上进行任何导航都不会重新创建该错误。
我对错误的解释是,对服务器的请求导致 PostResolveRequestCache 事件的 httpContext 为空,但我不确定这怎么可能。
通过重新启动应用程序池可以解决问题。
该应用程序在 IIS6 上运行,因此,我在 aspnet_isapi.dll 中添加了一个通配符应用程序映射,未选中“验证该文件是否存在”。这是为了启用没有文件扩展名的友好 url,但是我正在考虑将其更改为可能的解决方法。这背后的想法是,可能有一个请求被发送到服务器,该请求正在被拾取不应该的模块。
我的实施已经过定制,但遵循 Haack 先生制定的一般准则。由于错误的性质,我不确定我的任何代码是否会提供很多洞察力,但我显然愿意应要求这样做。
任何帮助将非常感激。