3

这让我发疯。我已经在 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 先生制定的一般准则。由于错误的性质,我不确定我的任何代码是否会提供很多洞察力,但我显然愿意应要求这样做。

任何帮助将非常感激。

4

3 回答 3

1

添加自定义文件扩展名并不理想,但阻止了进一步的错误消息。

于 2009-06-14T17:46:28.283 回答
1

可能与正在修改的路由集合有关。见其他问题

于 2009-12-14T06:45:52.067 回答
0

该错误与 .Net 中不是线程安全的集合一致。

请查看我对这个类似问题的最后回答

于 2014-04-09T12:05:26.730 回答