在 Angular 应用程序中对 /index.html 进行 POST 调用时出现 500 内部服务器错误
Posted
技术标签:
【中文标题】在 Angular 应用程序中对 /index.html 进行 POST 调用时出现 500 内部服务器错误【英文标题】:500 Internal Server Error on POST call to /index.html in Angular application 【发布时间】:2021-08-09 22:18:37 【问题描述】:我正在开发一个 Angular 应用程序。我正面临这个问题,我需要一些帮助来解决它。
当我对 http://500 Internal Server Error
,响应正文或标头中没有内容。
我在app.module.ts
中查看了RouterModule.forRoot
,但找不到单独过滤掉POST
呼叫的任何选项。
这是我正在运行的一个 Asp.Net Core MVC 应用程序。
我是角度新手。我不确定要走哪条路。任何帮助将不胜感激。
谢谢。
【问题讨论】:
你为什么要把POST
转成/index.html
?
好吧,坦率地说,这不是我。它是一个自动投票系统发布到我的应用程序。这降低了我的应用程序的可靠性得分。因此,试图摆脱这一点。
你能展示你的观点和两个动作 - 获取和发布吗?
尝试在Post方法中设置断点,并检查该方法是否被执行,并逐步检查是否有错误或异常。通常,在 Angular 应用程序中,我们使用Event binding 来处理 post 操作。此外,正如 Serge 所说,最好将相关代码共享以重现问题,然后我们可以共同解决。
【参考方案1】:
我最近遇到了同样的问题,根据我的调查,代码的行为因环境而异(开发与生产) 在开发中,如果你对 /index.html 进行 POST,你会得到 404,在生产中你会得到 500。我还提出了一个 GitHub 问题:https://github.com/dotnet/aspnetcore/issues/34420
我的临时解决方案是添加一个中间件并捕获来自 UseSpa 中间件的异常
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
......
app.Use(async (context, next) =>
//Redirect to root request to /index.html ( except the GET request )
//Do not generate logs for requests originating from automated tools: POST /Index.html, OPTIONS /index.html, DEBUG /index.htm, etc..
if (!HttpMethods.IsGet(context.Request?.Method)
&& context.Request?.Path.Value.ToLower() == "/index.html")
context.Response.Redirect("/");
return;
try
await next();
catch (InvalidOperationException spaException)
if (spaException.Message.StartsWith("The SPA default page middleware could not return the default page"))
context.Response.StatusCode = StatusCodes.Status404NotFound;
return;
throw;
);
app.UseSpa(...);
.....
【讨论】:
以上是关于在 Angular 应用程序中对 /index.html 进行 POST 调用时出现 500 内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章
在 Angular 中对 requestAnimationFrame 进行单元测试的选项都有哪些?
在 Angular 2+ 中对 FormArray 对象进行排序的理想方法是啥?