Angular和WebAPI配置

问题描述:

我们有一个Angular 4应用程序和一个WebAPI应用程序(.NET Framework)。我们有一个Azure应用程序,其中部署了两个应用程序(客户端和服务)。根路径指向客户端。Angular和WebAPI配置

对我们的API(/ api/{controller} /)的HTTP请求没有达到我们的服务,它看起来像是Angular路线选择它们并返回index.html作为响应内容。

我们如何设置Azure以便我们的Angular应用程序提供HTML/CSS/JS内容以及对我们服务的“/ api /”路由的任何调用?

我们尝试将根路径指向服务,但是我们接收到所有非API请求的404。

要回答我的问题,我需要提供静态文件,这篇文章中概述:

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