2009-06-04 62 views
2

我在我的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 

等等...

任何线索?

+0

你在你的应用程序中设置任何其他途径? – 2009-06-04 09:01:52

+0

我还有一个也添加了页面参数,所以{控制器}/{动作}/{编号}/{页面} – Chris 2009-06-04 09:30:52

回答

0

有一件事你应该看看在你的网站上你的web.config文件。堆栈跟踪的顶部;

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

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

这是从堆栈跟踪派生出来的一个狂野刺,但应该花太长的时间来看看这可能是一个问题。

0

如果其他人在此页面上显示并且未找到他们正在查找的解决方案,则URL中不允许使用某些字符串。阅读在这里:

Weird 404 error in ASP.NET MVC when including "con"

的解决方案是另一个微软的“WorkProperly”标志(其默认值是“假”)

相关问题