2

我的 MVC 站点出现一个奇怪的错误。我的控制器中有一个动作,它响应 {controller}/{action}/{id} 的默认路由 - 在我的例子中是 /Project/Client/{id}。

根据我传递给它的 id,我得到一个错误。关闭 Elmah,这是一个直接的 ASP.NET 404 错误。打开 Elmah 会给我以下信息:

System.Web.HttpException
   at System.Web.CachedPathData.GetConfigPathData(String configPath)
   at System.Web.CachedPathData.GetVirtualPathData(VirtualPath virtualPath, Boolean permitPathsOutsideApp)
   at System.Web.HttpContext.GetFilePathData()
   at System.Web.HttpContext.GetConfigurationPathData()
   at System.Web.Configuration.RuntimeConfig.GetConfig(HttpContext context)
   at System.Web.HttpContext.get_ImpersonationToken()
   at System.Web.ClientImpersonationContext.Start(HttpContext context, Boolean throwOnError)
   at System.Web.HttpApplication.ThreadContext.SetImpersonationContext()
   at System.Web.HttpApplication.ThreadContext.Enter(Boolean setImpersonationContext)
   at System.Web.HttpApplication.OnThreadEnterPrivate(Boolean setImpersonationContext)
   at System.Web.HttpApplication.ApplicationStepManager.ResumeSteps(Exception error)

这只发生在某些 ID 参数上。例如

/Projects/Client/ABC -- works
/Projects/Client/DEF -- works
/Projects/Client/GHI -- 404
/Projects/Client/JKL -- works

等等...

有什么线索吗?

4

3 回答 3

1

您可以使用 Phil Haacks 路由调试器来了解正在调用哪些路由,请在此处阅读:http: //haacked.com/archive/2008/03/13/url-routing-debugger.aspx

于 2009-06-04T12:41:04.587 回答
0

如果其他人出现在此页面上但没有找到他们正在寻找的解决方案,则 URL 中不允许使用某些字符串。在这里阅读:

包含“con”时,ASP.NET MVC 中出现奇怪的 404 错误

解决方案是 Microsoft 的另一个“WorkProperly”标志(其默认值为“false”)

于 2013-08-14T14:20:23.573 回答
0

您应该查看的一件事是您网站中的 web.config 文件。堆栈跟踪的顶部;

at System.Web.CachedPathData.GetConfigPathData(String configPath)

看起来是一个调用来确定 web.config 的位置。可能是您的路由 ( /Project/client/id) 定义的虚拟文件系统与可能存在于的 web.config 冲突,例如,~/Project/web.config

这有点像从堆栈跟踪中衍生出来的狂野刺,但不应该花太长时间来查看它是否可能是一个问题。

于 2009-06-20T09:41:53.543 回答