2017-09-08 5 views
3

自己ホスト型OWINインスタンスで実行するようにソリューションを変更したいのですが、必要に応じてhttp://localhostで実行する必要があります。セルフホスト可能でIISがホスト可能なOWINプロジェクト

Startupクラスをどのように構造化して、両方で認識させる必要がありますか?

現在、私はhttp://localhost:2746として、プロジェクトのURLを持つコンソールアプリケーションとして設定されたWeb APIプロジェクトを持っており、これが私のスタートアップクラスである:私もweb.configファイルでこれを持って

[assembly: OwinStartup(typeof(Startup))] 
namespace Books 
{ 
    public class Startup 
    { 
     public static void Main(string[] args) 
     { 
      const int port = 2746; 
      var url = $"http://localhost:{port}/"; 

      using (WebApp.Start<Startup>(new StartOptions(url) { ServerFactory = "Microsoft.Owin.Host.HttpListener" })) 
      { 
       var client = new HttpClient { BaseAddress = new Uri(url) }; 
       Console.ReadLine(); 
      } 
     } 

     public void Configuration(IAppBuilder app) 
     { 
      HttpConfiguration httpConfiguration = new HttpConfiguration(); 
      WebApiConfig.Register(httpConfiguration); 
      app.Use<CustomExceptionMiddleware>().UseWebApi(httpConfiguration); 
      app.UseFileServer(StaticFileConfig.Build()); 
     } 
    } 
} 

<add key="owin:AutomaticAppStartup" value="false" /> 

答えて

0

使用二つのプロジェクト:

  1. APIコントローラのWebプロジェクトを作成します。 OwinStartup属性が示す:このプロジェクトは、中
  2. 自己ホストとして別のコンソールプロジェクトを作成し、このプロジェクトは、今あなたがWebApiConfig/Controllers

このプロジェクトへのPSを共有することができ、Webプロジェクトを参照する必要がIISホストすることができますiisのエントリーポイントですが、私は伝統的な global.asaxを使ってapiの設定を初期化しています。その結果、クラスもコンフィグを共有することができます WebApiConfig

関連する問題