1

Visual Studio 2019 に 2 つのプロジェクトを含むソリューションがあります。

  1. C # クラス ライブラリ(WebAPI プロジェクト)
  2. C# コンソール アプリケーション(プロジェクト 1 を参照するOWIN SelfHost プロジェクト)

SelfHost プロジェクトの唯一の目的は、WebAPIを Visual Studio なしで実行できるようにすることです。

Visual Studio でWebAPIプロジェクトを実行すると、すべて正常に動作します。静的コンテンツが提供され、ブラウザーを介してその ApiControllers を呼び出すことができます。

SelfHostプロジェクトを実行すると、ブラウザから ApiControllers を呼び出したりアクセスしたりできません。これは、Global.asax内の次のコードが実行されないことが原因である可能性があります。Application_Startメソッドは呼び出されません。

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
}

したがって、コントローラーを URI にリンクするメカニズムは実行されません。

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 }
        );
    }
}

症状は説明できますが、どのように修正するのですか?SelfHost プロジェクトから GlobalConfiguration.Configure メソッドを手動で呼び出してこれを修正しようとしましたが、次のエラーが発生しました。

「このメソッドは、アプリケーションの開始前の初期化フェーズ中に呼び出すことはできません。」

どんな助けでも大歓迎です。

4

1 に答える 1