[在IIS 8.5上发布.NET Core 3.1 React应用程序导致不遵守API路由

问题描述 投票:0回答:1

我目前正在尝试挂载使用dotnet new react创建的.NET Core 3.1 MVC应用程序。通过Visual Studio Code运行该应用程序时,它运行良好。但是,当使用dotnet publish -c Release -r win81-x64发布并将应用程序安装在IIS 8.5中时,API的路由将停止工作,并将所有请求发送到React页面。

当前,我在Startup.cs中的配置如下所示:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseSpaStaticFiles();

    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller}/{action=Index}/{id?}");
    });

    app.UseSpa(spa =>
    {
        spa.Options.SourcePath = "ClientApp";

        if (env.IsDevelopment())
        {
            spa.UseReactDevelopmentServer(npmScript: "start");
        }
    });
}

以及我在测试控制器中编写的代码如下:

namespace Application.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class TestController : ControllerBase {

        private readonly ILogger<TestController> _logger;

        public TestController(ILogger<TestController> logger)
        {
            _logger = logger;
        }

        [HttpGet]
        public async Task<ActionResult<string>> GetTest()
        {
            return "Test";
        }
    }
}

我还尝试创建一个新的React项目并安装它,这似乎确实可行。但是,Startup.cs文件具有完全相同的配置,因此我找不到在我的应用程序上要修改的任何内容。

asp.net-core-mvc asp.net-core-3.1
1个回答
0
投票

我知道了。事实证明,我上传的第一个版本存在一些问题,导致路由无法正常工作,而当我立即对其进行修复时,默认的.NET项目已将损坏的API点缓存为站点的一部分的Service Worker。显然,这绕过了开发人员工具中的“禁用缓存”复选框。

© www.soinside.com 2019 - 2024. All rights reserved.