asp.net - 客户端可以取消 Web Api 请求吗?

标签 asp.net asp.net-web-api owin cancellation-token

我的 Web API Controller 中有以下方法(长时间运行的方法支持取消 token ,即如果请求取消,它们将不会运行):

public async Task<IHttpActionResult> ApiMethod(CancellationToken cancellationToken)
{
    await LongRunningNetworkOperation1(cancellationToken);
    await LongRunningNetworkOperation2(cancellationToken);

    return Ok();
}

客户端有以下代码来调用我的 Web api Controller :

using (var httpClient = new HttpClient())
{
    httpClient.Timeout = TimeSpan.FromMilliseconds(3000);

    try
    {
        // Sending DELETE request
        HttpResponseMessage deleteMessage = await httpClient.
                             DeleteAsync("http://localhost:80/api/apiMethod");
    }
    catch (Exception e)
    {
        // Timeout occurred.
    }
}

如果在调用“LongRunningNetworkOperation2”之前客户端请求超时,cancellationToken 是否会阻止“LongRunningNetworkOperation2”运行?换句话说,客户端是否可以向 Web api 发送信号以停止运行某个请求?

最佳答案

can the client signal the web api to stop running a certain request?

理论上是的。取消 HttpClient 应关闭底层 TCP/IP 连接。作为响应,ASP.NET 堆栈应检测其客户端丢失,并取消 WebAPI CancellationToken

实际上,这取决于您使用的 HttpClientWebAPI 实现的完整性。取消不一定保证,但我希望它至少适用于桌面 HttpClient

关于asp.net - 客户端可以取消 Web Api 请求吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36586632/

相关文章:

c# - 如何创建一个自定义属性,如果它返回 false 将重定向到登录,类似于授权属性 - ASP.NET MVC

c# - ASP.NET MVC 5 - EntityType 没有定义键

iphone - 解析 HTML 内容以与 iPhone 应用程序一起使用

asp.net - 为什么当我使用 TortoiseSVN 更新代码时 ASP.Net 会锁定

asp.net-web-api - asp.net web api中带两个参数的方法

asp.net - 在 .NET 标准中创建 OWIN 中间件

asp.net-web-api - Async和Await在Web API上不起作用

c# - Azure MobileApp 自定义身份验证 VS Asp.Net 身份

c# - 在中间件中更改 OWIN Request.Body

c# - Web API/OWIN、SignalR 和授权