MVC 4アプリケーションのWeb APIパッケージを更新して、属性ルーティングを使用できるようにしました。 config.MapHttpAttributeRoutes()
を追加すると、「オブジェクトはまだ初期化されていません。アプリケーションのHttpConfiguration.EnsureInitialized()が呼び出されていることを確認してください。他のすべての初期化コードの後の起動コード。 "config.MapHttpAttributeRoutes()
およびRoute属性を削除すると、すべてが以前と同じように機能します。このエラーを解決するにはどうすればよいですか?
これが私のWebApiConfigクラスです:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type.
// To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries.
// For more information, visit http://go.Microsoft.com/fwlink/?LinkId=279712.
//config.EnableQuerySupport();
}
}
そしてエラーの詳細:
オブジェクトはまだ初期化されていません。他のすべての初期化コードの後に、アプリケーションの起動コードでHttpConfiguration.EnsureInitialized()が呼び出されていることを確認します。
説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーの詳細と、コードのどこで発生したかについては、スタックトレースを確認してください。
例外の詳細:System.InvalidOperationException:オブジェクトはまだ初期化されていません。他のすべての初期化コードの後に、アプリケーションの起動コードでHttpConfiguration.EnsureInitialized()が呼び出されていることを確認します。
ソースエラー:
現在のWeb要求の実行中に未処理の例外が生成されました。例外の発生源と場所に関する情報は、以下の例外スタックトレースを使用して識別できます。
スタックトレース:
[InvalidOperationException: The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the application's startup code after all other initialization code.]
System.Web.Http.Routing.RouteCollectionRoute.get_SubRoutes() +127
System.Web.Http.Routing.RouteCollectionRoute.GetRouteData(String virtualPathRoot, HttpRequestMessage request) +99
System.Web.Http.WebHost.Routing.HttpWebRoute.GetRouteData(HttpContextBase httpContext) +191
System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext) +233
System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context) +60
System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e) +82
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69
Global.asaxでは、Application_Startイベントを
WebApiConfig.Register(GlobalConfiguration.Configuration);
に:
GlobalConfiguration.Configure(WebApiConfig.Register);