0

私の ASP.NET MVC 3 Web プロジェクトは正常に動作していましたが、それを再コンパイルしたところ、次のエラーが発生しました (一部のパスと名前空間は無実を保護するために変更されました)。

オブジェクト参照がオブジェクト インスタンスに設定されていません。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

ソース エラー:

66 行目:
RouteTable.Routes.MapRoute( 67 行目:
"DefaultRoutes", // ルート名 68 行目:
"{module}/{controller}/{action}/{id}", // パラメータ付き URL

ソース ファイル: ....\Global.asax.cs
行: 66

スタックトレース:

[NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。]
Project.MvcApplication.RegisterRoutes(RouteCollection routes) in D:.....\Global.asax.cs:66 Project.MvcApplication.Application_Start() in D: .....\Global.asax.cs:139

[HttpException (0x80004005): オブジェクト参照がオブジェクトのインスタンスに設定されていません。]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext コンテキスト、HttpApplication アプリ) +4051717 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext、HttpContext コンテキスト、MethodInfo[ ] ハンドラー) +191
System.Web.HttpApplication.InitSpecial(HttpApplicationState 状態、MethodInfo[] ハンドラー、IntPtr appContext、HttpContext コンテキスト) +352 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext、HttpContext コンテキスト) +407 System.Web.Hosting .PipelineRuntime.InitializeApplication(IntPtr appContext) +375

[HttpException (0x80004005): オブジェクト参照がオブジェクトのインスタンスに設定されていません。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext コンテキスト) +11642112
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext コンテキスト) +141
System.Web.HttpRuntime. ProcessRequestNotificationPrivate (IIS7WorkerRequest wr、HttpContext コンテキスト) +4865877

Windows 7 x64 で IIS7.5 を使用しています。アプリケーション プールは、.NET 4 および「統合された」マネージド パイプラインで実行するように構成されています。

再起動を試みましたが、bin フォルダーと obj フォルダーも消去しましたが、成功しませんでした。

重要であることが判明したいくつかの追加情報 - 上記のエラー ページから欠落している行:

RouteTable.Routes.MapRoute(
    "DefaultRoutes", // Route name
    "{module}/{controller}/{action}/{id}", // URL with parameters
    new { module = _loadedModules.FirstOrDefault().Name, controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
4

2 に答える 2

1

global.asax.csでは、次のように書くことができます

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute(....);//you should use routes parameter rather than RouteTable.Routes   
}
于 2011-06-28T05:01:55.187 に答える
0

このプロジェクトはモジュールを動的にロードします。元のASP.NETエラーページから明らかではなかったのは、NullReferenceExceptionがMapRoute()メソッド呼び出しの最後の行によって引き起こされていたということでした。

_loadedModulesが空であることが判明したため、FirstOrDefault()はnullを返していました。したがって例外です。

于 2011-06-28T05:16:42.950 に答える