我目前正在尝试挂载使用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
文件具有完全相同的配置,因此我找不到在我的应用程序上要修改的任何内容。
我知道了。事实证明,我上传的第一个版本存在一些问题,导致路由无法正常工作,而当我立即对其进行修复时,默认的.NET项目已将损坏的API点缓存为站点的一部分的Service Worker。显然,这绕过了开发人员工具中的“禁用缓存”复选框。