【问题标题】:How to host web api with Angular solution with .NET core如何使用带有 .NET 核心的 Angular 解决方案托管 Web api
【发布时间】:2018-06-28 11:16:34
【问题描述】:

使用 .NET Core 和 Angular 自托管 UI 和 API

如何设置我的 angular / vs 解决方案,以便我可以运行以下场景。

导航到 localhost:4200/home 即在 chrome 中 我单击一个按钮,该按钮(在角度代码中)调用“api/values”而不是“localhost:5000/api/values”

这是我复制我的解决方案所采取的步骤。

vs代码终端内

ng new myui --routing
cd myui
ng serve ## opens the default angular project on localhoost:4200/

在这个项目的目录下打开一个终端

dotnet new webApi  ##

我通过更改launchsettings.json 中的设置来运行它的大多数尝试都以找不到页面错误或ui当前正在使用该端口而告终

【问题讨论】:

    标签: angular visual-studio-code .net-core


    【解决方案1】:

    Angular httpclient 需要完整的 url 才能到达端点。我通常将“http://localhost:5000/api/”存储在全局变量中,大豆在我调用的每个服务中 httpclient.get(variableName + 'values').... 这样我可以在部署或更改回时轻松更改我的 webapi url要调试的本地服务器。

    【讨论】:

    • 我想我需要重新提出我的问题,我想从同一个主机和端口运行 api 和 angular 我该如何配置?
    • 在 localhost 和 angular-cli 或 dotnet 中的嵌入式 Web 服务器中,我认为您不能。在托管环境(我使用 IIS)中,您将 Angular 应用程序托管在 IIS 的根目录中,然后将 .core 应用程序托管在一个文件夹中(您也可以在您的电脑中安装 IIS 并将其托管在那里)
    【解决方案2】:

    是的,您可以做到这一点,并且有开箱即用的支持,来自 this doc page,在命令提示符下执行以下操作:

    dotnet new angular
    

    然后在为您创建的 ClientApp 文件夹中:

    npm install
    

    完成后,回到您的原始文件夹中,执行以下操作来构建和运行您的应用:

    dotnet build
    dotnet run
    

    然后,您将拥有一个主机,该主机将同时为您的 Angular 客户端和 API 后端提供服务,您可以使用例如:

    http://localhost:5000/api/sampledata/weatherforecasts
    

    您将从与 MVC 控制器不匹配的任何其他路由获取客户端,例如:

    http://localhost:5000
    

    发生的事情非常简单,它基本上是一个 dotnet 核心 MVC 应用程序,它通过其默认控制器操作 (/home/index) 为 Angular 应用程序提供服务。 具有 API 操作的控制器。

    编辑:

    从最新模板开始,Angular 文件由 SPA 中间件提供,默认情况下该中间件添加在 MVC 中间件之后。因此,您将首先点击作为模板一部分添加的 API 控制器(以及您选择添加的任何其他 MVC 控制器)。然后,您将点击 SPA 中间件,该中间件仅提供静态 Angular 文件。

    有一些方法可以自定义此过程(例如,提供多个不同的 SPA),您可以通过调用 here 查看添加中间件 here 的源代码,然后您可以覆盖选择的文件提供程序向上here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-05
      • 2020-01-01
      • 1970-01-01
      • 2020-01-25
      • 2020-03-06
      • 2022-12-22
      • 2019-12-05
      • 1970-01-01
      相关资源
      最近更新 更多