typescript - 无法使用 Visual Studio Code 从 Typescript 访问 C# Controller

标签 typescript asp.net-core visual-studio-code angular6

我已经使用 Visual Studio 2017 在带有 ASP.NET Core 后端的 Angular 4+(我们现在是 6)上工作了好几个月,但我无法接受如此多的错误VS2017模板会溢出更多。总而言之,我总是可以很好地调试,但该模板不允许轻松部署。

受够了这一切,我决定尝试一下 VS Code,我对 Angular 开发的工作方式感到惊讶。我设法将所有 Typescript 文件迁移到一个新项目(使用 ng new my-project),并且我成功地浏览甚至发布,没有出现任何问题,但也没有后端。这就是事情变得艰难的时候。我在 VS Code 中使用 dotnet new -o webapi 为 API 创建了另一个项目,尽管我可以将所有 C# 代码迁移到其中并成功构建它,但我一生都做不到从 typescript 调用我的 C# 路由。

对于初学者来说,我知道 ngserve 会将角度应用程序部署到端口 4200,而 dotnet run 将后端部署到端口 5000,这是一个问题本身,但是如何构建我的代码以便在同一端口下运行两个应用程序?我不想回到 SPA 模板 (dotnet new Angular),这是我能在 VS2017 和 VS 上找到的有关 Angular6 + ASP.NET Core 的唯一信息谷歌上的代码。我关注了this tutorial在 VS Code 中设置我的 Angular 6 应用程序,它运行得非常好,但我似乎可以找到一种方法来创建它可以监听的 C# API。

回到 VS2017,我只需将两个项目放在同一个解决方案下,运行 Web 项目,一切都会顺利进行。但现在我不知道如何构建我的代码以便在 VS Code 下执行相同的操作,每当我尝试从 API 调用方法时,我总是会收到 404 错误(这是可以理解的,因为我没有监听调用到与我运行前端应用程序相同的端口的后端)。总之,我想将开发环境从 VS2017 迁移到 VS Code,而不求助于 SPA 模板,同时在同一端口下运行前端和后端(就像模板允许我这样做),但我被卡住了。

typescript 调用:

this.http.post('/api/lists/GetPack/', { Id: frameList.Id }).subscribe(result => {
  this.pack = result.json();
});

C# Controller :

[Route("api/[controller]")]
public class ListsController : Controller
{
    private ListDbContext context;

    public ListsController(ListDbContext context)
    {
        this.context = context;
    }

    [HttpPost]
    [Route("[action]")]
    public IActionResult GetPack([FromBody]HttpData postData)
    {
        var autoList = new AutoList(context);
        autoList.Load(postData.Id);
        var response = JsonConvert.SerializeObject(autoList.Pack);
        return Ok(response);
    }
}

最佳答案

我也遇到了和你一样的问题。我想将我的 Angular 部署到 WebAPI 项目中。所以这就是我所做的。

第 1 步:我将 WebAPI 项目和 Angular CLI 项目放在同一个文件夹中

来源

--WebAPI(.NET Core)

-- WebUI(角度)

第 2 步:在 Angular 配置中编辑 Angular 项目的输出:

“outDir”:“../WebAPI/wwwroot/dist”(.angular-cli.json)

“outputPath”:“../WebAPI/wwwroot/dist”(Angular.json)

第 3 步:从 WebUI 运行 ng build

第 4 步:运行 WebAPI

注意:您应该在启动中允许 StaticFile

app.UseDefaultFiles();
app.UseStaticFiles();

第五步:打开http://localhost:5000/dist

Angular 输出正在 .NetCore 服务器上运行。

您可以删除 dist 文件夹并使用您想要的任何位置,但它应该位于 wwwroot

关于typescript - 无法使用 Visual Studio Code 从 Typescript 访问 C# Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53113519/

相关文章:

asp.net - 在 Visual Studio 中使用断点调试 Typescript

c# - Bearer 被 IdentityServer4 中的授权过滤器禁止

node.js - VS 代码 : help debugging angular 2 with express

angular7 aot : Expression form not supported

angular - 用管道控制 Observables

c# - Dot Net Entity Framework 数据库更新不会在 mysql 数据库中创建表

html - 我将样式设置为移动但图像不会移动

javascript - 扩展 VSCode Markdown 语法高亮以匹配嵌套的 Javascript 代码

autocomplete - VS Code 中的自定义语言自动补全

python-3.x - VS-Code Python 调试 - ConnectionRefusedError : [WinError 10061] No connection could be made because the target machine actively refused it