2017-11-22 6 views
0

ASPネットコア2で角度のあるプロジェクトを構築しました。過去2時間、OWINでホストしませんでした。私はVS publishを使用して、公開するファイルを生成しました。このファイルは、Visual Studioから直接IIS Expressで実行するとうまく動作します。 セルフホストaspコア - コンソールアプリケーションとしてOWINを使用したアンギュラ2サイト

この

は、公開フォルダのファイル構造である: MainDirectory wwwrootの distの ファビコン

私はセットアップ.NET(Visual Studioの)で公開するプロジェクトを持っていると私のstartup.csクラスに次のように持っていますが、サービスを開始した後にURLを参照すると、ページには何も表示されません。以下のコードを使用しました。

const string rootFolder = "C:\\src\\StartupService\\maindirectory"; 
      var fileSystem = new PhysicalFileSystem(rootFolder); 
      var options = new FileServerOptions 
      { 
       EnableDefaultFiles = true, 
       FileSystem = fileSystem 
      }; 

      app.UseFileServer(options); 

は、私はC#でapp.UseWelcome()ページでOWIN自己ホストサーバをテストし、それは大丈夫だったが、それは文句を言わない私の角度サイトにサービスを提供することを言及したいと思います。ちょうど私がどこでも、dlls、jsonファイルとweb.config、どこでも、それが問題であるかわからないので、パブリッシュフォルダ内の任意のhtmlファイルを参照してください。

このコードも試しましたが、うまくいきませんでした。

var physicalFileSystem = new PhysicalFileSystem("C:\\src\\StartupService\\maindirectory"); 
      var options = new FileServerOptions 
      { 
       EnableDefaultFiles = true, 
       FileSystem = physicalFileSystem, 
       StaticFileOptions = 
       { 
        FileSystem = physicalFileSystem, 
        ServeUnknownFileTypes = true 
       }, 
       // DefaultFilesOptions = {DefaultFileNames = new[] {"index.html"}} 
      }; 
      app.UseFileServer(options); 

OWINでVS2017で作成したAngular 2を自己ホストする方法はありますか?ご協力いただきありがとうございます。

答えて

0

@ "。\ Public"などの相対パスをPhysicalFileSystemオブジェクトに渡してみてください。

ここに拡張ヘルパーがあります。

public static class FileServerConfig 
    { 
     internal static void ServeFiles(this IAppBuilder app, string path = @".\Public") 
     { 
      try 
      { 
       var fileServerOptions = new FileServerOptions() 
       { 
        EnableDefaultFiles = true, 
        EnableDirectoryBrowsing = false, 
        RequestPath = new PathString(string.Empty), 
        FileSystem = new PhysicalFileSystem(path) 
       }; 

       fileServerOptions.StaticFileOptions.ServeUnknownFileTypes = true; 

       app.UseFileServer(fileServerOptions); 
      } 
      catch (System.Exception) 
      { 
       // Serilog.Log.Fatal("Cannot locate Public folder"); // Logging 
      } 
     } 
    } 

のアプリで新しいクラスに上記のコードを追加してからStartup.csのいずれかの操作を行います。

また
app.ServeFiles(); 

または

app.ServeFiles(@".\customPath"); 

を。 web.configファイル

<handlers> ... <add name="Owin" verb="" path="*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler, Microsoft.Owin.Host.SystemWeb" /> </handlers>

にOwinハンドラを追加してください
関連する問題