asp.net-core – 在ASP.NET Core MVC中,浏览器中止没有中止(取消)HttpRequest
|
我编写了以下MVC控制器来测试取消功能: class MyController : Controller
{
[HttpGet("api/CancelTest")]
async Task<IActionResult> Get()
{
await Task.Delay(1000);
CancellationToken token = HttpContext.RequestAborted;
bool cancelled = token.IsCancellationRequested;
logger.LogDebug(cancelled.ToString());
return Ok();
}
}
说,我想取消请求,因此在上面的控制器操作中记录值’true’.如果服务器实现IHttpRequestLifetimeFeature,这可能是服务器端.幸运的是,Kestrel确实如此,这可以通过以下方式实现: var feature = (IHttpRequestLifetimeFeature) HttpContext.Features[typeof(IHttpRequestLifetimeFeature)]; feature.Abort(); 但问题是我想在客户端取消请求.例如,在浏览器中.在ASP.NET MVC / WebApi的预核版本中,如果浏览器中止请求,则取消令牌将自动取消.示例:在Chrome中多次刷新页面.在chrome dev工具的“网络”选项卡中,您现在可以看到取消上一个(未完成的)请求. 问题是:在Kestrel上运行的ASP.NET Core中,我只能在日志中看到以下条目:
因此,来自浏览器的中止请求到达并由Kestrel网络服务器处理.但它不会影响控制器中HttpContext的RequestAborted属性,因为该方法仍会记录值’false’. 题: 也许我可以做一些订阅Kestrel的操作取消触发器并调用IHttpRequestLifetimeFeature.Abort()方法的东西? 更新: 更多更新: 解决方法事实证明,简单地使用HttpContext.RequestAborted确实是正确的方法,但是由于Kestrel中的错误(处理FIN / RST包的顺序),请求在浏览器中止时没有中止.最终应该在Kestrel 2.0中修复该错误. 有关详细信息,请参阅我的问题中的更新. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 部署 – Crystal报表文件未部署到ASP.NET MVC中的服务器
- asp.net-mvc-3 – 在Asp.net MVC中为optgroup功能使用Helpe
- 对asp.net网站进行基准测试,我可以使用jmeter吗?
- asp.net-mvc – ASP.NET MVC – Html.Textbox()throws“对象
- asp.net mvc4 jquery不工作
- asp.net – jqgrid jsonReader配置
- asp.net-mvc – 使用ASP.NET MVC的基础认证
- asp.net – 如何使用javascript生成假回发?
- 如何在aspx页面中隐藏ASP.NET自定义控件的属性?
- ASP.NET MVC 2应用程序中的区域可以映射到子域吗?
- asp.net-mvc – Windows 8 VS2012 IISExpress Wi
- asp.net – 有没有办法在Web Api控制器中处理表单
- asp.net-mvc-4 – ASP.NET MVC:脚本捆绑何时决定
- asp.net-mvc – Request.GetOwinContext在单元测
- asp.net-mvc – ASP.Net MVC:如何根据原始的Jso
- 如何在ASP.NET MVC中具有相同名称的文件夹和控制
- asp.net-mvc-4 – ASP.NET MVC4模型绑定
- asp.net – MVC5认证中的“和主域之间的信任关系
- asp.net-mvc – HttpContext中需要什么来允许For
- Asp.net Core 1.1 升级后操作mysql出错的解决办法
