Asp.net mvc CancellationToken如何在引擎盖下工作?

Asp.net mvc CancellationToken如何在引擎盖下工作?,asp.net-mvc,http,cancellation-token,Asp.net Mvc,Http,Cancellation Token,是否必须发出另一个http请求 浏览器如何通知服务器放弃/取消的请求 我需要为客户端编写代码才能工作吗 这是我的ASP MVC控制器方法: [HttpGet("/get")] public async Task<string> Get(CancellationToken cancellationToken) { //propagate CancellationToken to Entity Framework } [HttpGet(“/get”)] 公共异步任务获取(Can

是否必须发出另一个http请求

浏览器如何通知服务器放弃/取消的请求

我需要为客户端编写代码才能工作吗

这是我的ASP MVC控制器方法:

[HttpGet("/get")]
public async Task<string> Get(CancellationToken cancellationToken)
{
   //propagate CancellationToken to Entity Framework

}
[HttpGet(“/get”)]
公共异步任务获取(CancellationToken CancellationToken)
{
//将CancellationToken传播到实体框架
}
  • 浏览器可以通过关闭底层TCP连接来取消HTTP请求。HTTP.SYS和IIS检测到这一点,并将连接关闭通知传递给应用程序代码,如ASP.NET。在ASP.NET中,这是通过
    HttpResponse.IsClientConnected
    属性和其他位置公开的。见本质量保证:
  • 网页客户端脚本无法取消“主”请求(用户通过使用地址栏或单击页面中的链接手动导航)-只有用户可以通过按停止按钮取消该请求。您的客户端代码可以通过使用
    abort()
    函数来取消
    XMLHttpRequest
    (AJAX)和现代
    fetch
    请求(jQuery也在它们自己的
    $.AJAX
    返回对象中公开这一点)
  • 本文介绍如何在异步控制器操作方法中使用
    CancellationToken
  • Entity Framework 6对异步操作的支持有限,主要是通过查询的
    ToListSync
    和存储操作的
    SaveChangesSync
    。确保使用了正确的扩展方法:接受
    CancellationToken
    but。显然,
    async
    与EF的延迟加载功能不兼容,因此您需要在异步代码中预先加载所有需要的实体,这样延迟加载就不会被调用。无论如何,我建议在大多数情况下禁用延迟加载

  • 你能提供一个简单的代码示例吗?
    CancellationToken
    非常常见,具体的实现细节取决于您调用的实际函数。