builder.Services.AddRequestTimeouts - 504网关超时
我已经完成了所有设置,但仍然不起作用。我配置了 program.cs 文件,将来自 AddRequestTimeouts 的策略添加到控制器,结果仍然返回504错误。
我在 program.cs 文件和控制器中将超时设置为只有在10分钟后才返回超时,但是无论如何,它在30秒后仍然返回一个HTML消息。
有谁知道我应该怎么做才能解决这个问题吗?
返回Postman
<html>
<body>
<h1>504 Gateway Time-out</h1>
The server didn't respond in time.
</body>
</html>
Program.cs:
builder.Services.AddRequestTimeouts(options =>
{
options.DefaultPolicy = new RequestTimeoutPolicy { Timeout = TimeSpan.FromSeconds(60) };
options.AddPolicy("LongTimeout", new RequestTimeoutPolicy { Timeout = TimeSpan.F romMinutes(5) });
});
var app = builder.Build();
app.UseRouting();
app.UseRequestTimeouts();
app.MapControllers();
app.Run();
控制器
[HttpPost]
[Route("import-file")]
[RequestTimeout("LongTimeout")]
public async Task<IActionResult> ImportFile([FromForm] ImportFileCommand command)
=> await ActionResultBaseExecute(command);
解决方案
首先,我会确保这不是Postman本身的特定问题。
为此,我会暂时为你的超时定义明确的状态码:
builder.Services.AddRequestTimeouts(o =>
{
o.DefaultPolicy = new RequestTimeoutPolicy()
{
Timeout = TimeSpan.FromSeconds(3),
TimeoutStatusCode = 501
};
o.AddPolicy(
"LongTimeout",
new RequestTimeoutPolicy
{
Timeout = TimeSpan.FromSeconds(5),
TimeoutStatusCode = 502
});
});
当然,尝试调整超时数值,以进一步缩小问题范围。
然后,如果你是在本机测试,请确保不要附加调试器(这样超时才会生效)——但我相信你已经做过了。
最后但同样重要的是,在Visual Studio之外运行程序时,请确保修改后重新构建项目。有时,如果只是用 dotnet run 运行,可能会使用到过时的二进制文件。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。