Browse Source

Skip the default CancellationToken.

pull/9690/head
maliming 5 years ago
parent
commit
a5dc1681fe
  1. 13
      framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs
  2. 2
      framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/IRegularTestController.cs
  3. 3
      framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestController.cs
  4. 3
      framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestControllerClientProxy_Tests.cs

13
framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs

@ -308,8 +308,17 @@ namespace Volo.Abp.Http.Client.DynamicProxying
protected virtual CancellationToken GetCancellationToken(IAbpMethodInvocation invocation)
{
var cancellationToken = invocation.Arguments.LastOrDefault(x => x is CancellationToken);
return (CancellationToken?)cancellationToken ?? CancellationTokenProvider.Token;
var cancellationTokenArg = invocation.Arguments.LastOrDefault(x => x is CancellationToken);
if (cancellationTokenArg != null)
{
var cancellationToken = (CancellationToken) cancellationTokenArg;
if (cancellationToken != default)
{
return cancellationToken;
}
}
return CancellationTokenProvider.Token;
}
}
}

2
framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/IRegularTestController.cs

@ -38,6 +38,6 @@ namespace Volo.Abp.Http.DynamicProxying
Task<int> DeleteByIdAsync(int id);
Task AbortRequestAsync(CancellationToken cancellationToken);
Task<string> AbortRequestAsync(CancellationToken cancellationToken = default);
}
}

3
framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestController.cs

@ -131,9 +131,10 @@ namespace Volo.Abp.Http.DynamicProxying
[HttpGet]
[Route("abort-request")]
public async Task AbortRequestAsync(CancellationToken cancellationToken)
public async Task<string> AbortRequestAsync(CancellationToken cancellationToken = default)
{
await Task.Delay(100, cancellationToken);
return "AbortRequestAsync";
}
}

3
framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/DynamicProxying/RegularTestControllerClientProxy_Tests.cs

@ -165,6 +165,9 @@ namespace Volo.Abp.Http.DynamicProxying
var cts = new CancellationTokenSource();
cts.CancelAfter(10);
var result = await _controller.AbortRequestAsync(default);
result.ShouldBe("AbortRequestAsync");
var exception = await Assert.ThrowsAsync<HttpRequestException>(async () => await _controller.AbortRequestAsync(cts.Token));
exception.InnerException.InnerException.Message.ShouldBe("The client aborted the request.");
}

Loading…
Cancel
Save