2

MVCサイトで奇妙なエラーが発生します。コントローラに、{controller} / {action} / {id}のデフォルトルートに応答するアクションがあります。私の場合は、/ Project / Client/{id}です。

渡したIDによっては、エラーが発生します。Elmahをオフにすると、ASP.NET404エラーが発生します。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

確認する必要があるのは、サイト内の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 に答える
0

他の誰かがこのページに表示され、探している解決策が見つからない場合、特定の文字列はURLで許可されません。ここでそれについて読んでください:

「con」を含めると、ASP.NETMVCで奇妙な404エラーが発生します

このソリューションは、Microsoftの「WorkProperly」フラグの1つです(デフォルト値は「false」です)。

于 2013-08-14T14:20:23.573 に答える