2017-07-19 97 views
0

我們有一個Angular 4應用程序和一個WebAPI應用程序(.NET Framework)。我們有一個Azure應用程序,其中部署了兩個應用程序(客戶端和服務)。根路徑指向客戶端。Angular和WebAPI配置

對我們的API(/ api/{controller} /)的HTTP請求沒有達到我們的服務,它看起來像是Angular路線選擇它們並返回index.html作爲響應內容。

我們如何設置Azure以便我們的Angular應用程序提供HTML/CSS/JS內容以及對我們服務的「/ api /」路由的任何調用?

我們嘗試將根路徑指向服務,但是我們接收到所有非API請求的404。

回答

0

要回答我的問題,我需要提供靜態文件,這篇文章中概述:

https://mirkomaggioni.com/2016/09/11/owin-middleware-for-static-files/

概括地說,我部署服務(的WebAPI)到Azure的根和客戶端(Angular 4)作爲已編譯的「dist」文件夾進行部署。

添加以下的NuGet包:

<package id="Owin" version="1.0" targetFramework="net452" /> 
<package id="Microsoft.Owin" version="3.1.0" targetFramework="net462" /> 
<package id="Microsoft.Owin.FileSystems" version="3.1.0" targetFramework="net462" /> 
<package id="Microsoft.Owin.Host.SystemWeb" version="3.1.0" targetFramework="net462" /> 
<package id="Microsoft.Owin.StaticFiles" version="3.1.0" targetFramework="net462" /> 

然後創建一個OWIN啓動類,看起來像這樣:

public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     var physicalFileSystem = new PhysicalFileSystem(@"./dist"); 
     var options = new FileServerOptions 
     { 
      EnableDefaultFiles = true, 
      FileSystem = physicalFileSystem 
     }; 
     options.StaticFileOptions.FileSystem = physicalFileSystem; 
     options.StaticFileOptions.ServeUnknownFileTypes = true; 
     options.DefaultFilesOptions.DefaultFileNames = new[] 
     { 
      "index.html" 
     }; 

     app.UseFileServer(options); 
    } 
}