ASP.NET MVC操作在某些参数上给404提供了什么?
问题描述:
我在我的MVC网站中遇到了一个奇怪的错误。我在我的控制器中有一个操作,它响应{controller}/{action}/{id}的默认路由 - 在我的例子中是/ Project/Client/{id}。ASP.NET MVC操作在某些参数上给404提供了什么?
根据我传给它的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
等等...
任何线索?
答
您可以使用菲尔Haacks路线调试器来学习的被称为 这里读哪些路线: http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx
答
有一件事你应该看看在你的网站上你的web.config文件。堆栈跟踪的顶部;
at System.Web.CachedPathData.GetConfigPathData(String configPath)
看起来是一个调用来确定web.config的位置。这可能是由您的路由(/Project/client/id
)定义的虚拟文件系统与可能存在的web.config冲突,例如,~/Project/web.config
这是从堆栈跟踪派生出来的一个狂野刺,但应该花太长的时间来看看这可能是一个问题。
答
如果其他人在此页面上显示并且未找到他们正在查找的解决方案,则URL中不允许使用某些字符串。阅读在这里:
Weird 404 error in ASP.NET MVC when including "con"
的解决方案是另一个微软的“WorkProperly”标志(其默认值是“假”)
你在你的应用程序中设置任何其他途径? – 2009-06-04 09:01:52
我还有一个也添加了页面参数,所以{控制器}/{动作}/{编号}/{页面} – Chris 2009-06-04 09:30:52