Действие ASP.NET MVC дает 404 для определенных параметров? - PullRequest
2 голосов
/ 04 июня 2009

Я получаю странную ошибку на своем сайте MVC. У меня есть действие в моем контроллере, которое отвечает на маршрут по умолчанию {controller} / {action} / {id} - в моем случае, /Project/Client/ndomid coming.

В зависимости от идентификатора, который я передаю, я получаю сообщение об ошибке. Если 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

и так далее ...

Есть какие-нибудь подсказки?

Ответы [ 3 ]

1 голос
/ 04 июня 2009

Вы можете использовать отладчик маршрутов Фила Хаака, чтобы узнать, какие маршруты вызываются читай здесь: http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

0 голосов
/ 14 августа 2013

В случае, если кто-то еще появится на этой странице и не найдет решение, которое ищет, определенные строки символов не допускаются в URL. Читайте об этом здесь:

Странная ошибка 404 в ASP.NET MVC при включении "con"

Решением является еще один из флагов Microsoft "WorkProperly" (значение по умолчанию "false")

0 голосов
/ 20 июня 2009

Одна вещь, на которую вы должны обратить внимание - это файлы web.config на вашем сайте. Верх вашей трассировки стека;

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

Выглядит как звонок для определения местоположения web.config. Возможно, виртуальная файловая система, определяемая вашими маршрутами (/Project/client/id), конфликтует с web.config, который может существовать, скажем, ~/Project/web.config

Это что-то вроде дикого удара, полученного из трассировки стека, но это не должно занять слишком много времени, чтобы понять, может ли это быть проблемой.

...