带有 ASP.NET Core Web API 后端的 Angular 前端:Chrome 中的 500 内部服务器错误(在本地主机上运行,发布后不起作用)

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

我正在开发一个项目,该项目使用 Angular 作为前端,使用 ASP.NET Core Web API 作为后端。该设置在本地主机环境中完美运行。然而,发布后,我在 Chrome 中调用 API 时遇到了 500 Internal Server Error。 Edge 或 Firefox 中不会出现此问题。

其他详细信息

  1. 我已在 .NET Core 中设置 CORS 策略并允许所有来源。
  2. 清除 Chrome 的缓存和历史记录可以暂时解决该问题,但在 Chrome 中再次打开已发布的链接时,该问题又会再次出现。
  3. 部署后才出现问题;在本地,API 调用成功,没有问题。

发布后,什么可能会导致 Chrome 出现 500 错误,尤其是当 API 调用在本地主机上运行时?

任何有关此问题的见解将不胜感激。

更新

这就是我设置 CORS 策略的方式:

 var builder = WebApplication.CreateBuilder(args);

 builder.Services.AddCors(options =>
   {
       options.AddPolicy("CorsPolicy",
           builder => builder.AllowAnyOrigin()
               .AllowAnyMethod()
               .AllowAnyHeader());
   });

 var app = builder.Build();
 app.UseCors("CorsPolicy");
angular asp.net-core-webapi http-status-code-500
1个回答
0
投票

最有可能

  1. 我会仔细检查 API 调用是否使用 https 而不是 HTTP。一般来说,您可以在本地主机上使用 HTTP,但 Chrome 可能会拒绝它。

深入挖掘

  1. 如果您使用的是 Azure(假设您的后端采用 C# 语言),请使用 Application Insight 日志。 (Rider 有一个扩展,它还可以在本地显示日志,这为我节省了大量时间:https://plugins.jetbrains.com/plugin/13984-application-insights-debug-log-viewer

  2. 在 API 端点内使用 try-catch 块来包装控制器尝试执行的每个操作。

例如:

[HttpGet("/DoSomething")]
public async Task<ActionResult> DoSomething()
{

    try
    {
       //Your code goes here
    }
    catch(Exception e)
    {
        return e.message
    }
}

此方法与服务结果模式大致相似https://www.milanjovanovic.tech/blog/function-error-handling-in-dotnet-with-the-result-pattern

我不是最大的粉丝,但是很方便

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