为WebApi控制器配置请求超时时间。

10
我在WebAPI控制器中使用异步方法:

我在WebAPI控制器中使用异步方法:

public async Task<HttpResponseMessage> SampleMethod(int subscriptionNumber, DateTime departureDate)
{
    // [...]
}

如何配置请求超时时间?操作可能需要花费几分钟的时间,我必须确保请求不会超时。

MVC中有一个称为[AsyncTimeout]的属性,WebApi中是否有类似的属性?是否可以进行全局配置?

1个回答

7

这是一个好问题。我建议从客户端处理 - 即使使用ajax,您也可以在消费者代码中指定超时设置:

$.ajax({
url: "/ajax_json_echo/",
timeout: 1000,
...

1
你是在说IIS/ASP.NET/WebApi2没有任何内置的超时时间吗? - jgauffin
2
是的,到目前为止他们还没有任何东西。WebAPI支持取消令牌以取消操作,因此您可以尝试使用CancellationTokenSource.CancelAfter来实现,但正如我所提到的-从消费代码方面来看。 - Borys Generalov
1
以下摘录也揭示了一些原因:“取消HTTP请求的方法是直接在HttpClient上取消它们。原因是多个请求可以在单个HttpClient中重用TCP连接,因此您不能安全地取消单个请求,而不可能影响其他请求。” - Borys Generalov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接