C# 取消从Angular到.NET Core的长操作

C# 取消从Angular到.NET Core的长操作,c#,angular,asp.net-core,abp,C#,Angular,Asp.net Core,Abp,我尝试从Angular client(使用Observable->unsubscribe…)发送一个取消请求(在基于Abp样板的c#AspNetCore上),以取消长任务操作,但API不触发 [HttpPost] 公共异步任务GetDataLongOperation(CustomInputDto输入) { 尝试 { var tokenSource=new CancellationTokenSource();//_httpContextAccessor.HttpContext.RequestAbo

我尝试从Angular client(使用Observable->unsubscribe…)发送一个取消请求(在基于Abp样板的c#AspNetCore上),以取消长任务操作,但API不触发

[HttpPost]
公共异步任务GetDataLongOperation(CustomInputDto输入)
{
尝试
{
var tokenSource=new CancellationTokenSource();//_httpContextAccessor.HttpContext.RequestAborted;
tokenSource.CancelAfter(2500);
var token=\u httpContextAccessor.HttpContext.RequestAborted;//tokenSource.token;
var设置=新的JsonSerializerSettings
{
错误=(发送方,参数)=>{
args.ErrorContext.Handled=true;
},
MissingMemberHandling=MissingMemberHandling.Ignore
};
//…为了brev而离开
}
角度

this.subscription=this.loadData(未定义)。subscripte(res=>{
log('data-loaded!');
this.localData=res.data;
//this.\u rawData=this.localData;
这是loadItems();
});
设置超时(()=>{
console.log('teststop long')
this.subscription.unsubscripte();
}, 2500);

我测试了如果我使用TaskSource和Cancel,那么所有的代码都可以很好地工作,但是来自web(客户端)我无法启动取消操作

您可以添加一个CancellationToken作为控制器操作的参数,您不需要在控制器中创建CancellationTokenSource。当取消订阅取消HTTP请求时,此令牌将被取消

[HttpPost]
公共异步任务GetDataLongOperation(CustomInputDto输入,CancellationToken令牌)
{
尝试
{
var设置=新的JsonSerializerSettings
{
错误=(发送方,参数)=>{
args.ErrorContext.Handled=true;
},
MissingMemberHandling=MissingMemberHandling.Ignore
};
}
捕获(TaskCanceledException e)
{
//可观察到的数据在角度上未被订阅
}

您可以添加一个CancellationToken作为控制器操作的参数,您不需要在控制器中创建CancellationTokenSource。当取消订阅取消HTTP请求时,此令牌将被取消

[HttpPost]
公共异步任务GetDataLongOperation(CustomInputDto输入,CancellationToken令牌)
{
尝试
{
var设置=新的JsonSerializerSettings
{
错误=(发送方,参数)=>{
args.ErrorContext.Handled=true;
},
MissingMemberHandling=MissingMemberHandling.Ignore
};
}
捕获(TaskCanceledException e)
{
//可观察到的数据在角度上未被订阅
}

我找到了一个解决方案,这完全取决于角度关闭/取消连接

我使用这个解决方案来解决如何取消路由器更改时的http调用


我把它放在root.module.ts上,所以现在当用户更改路由时,所有连接都会收到取消,如果实现了,它会关闭流。

我找到了一个解决方案,这完全取决于角度关闭/取消连接

我使用这个解决方案来解决如何取消路由器更改时的http调用

我把它放在root.module.ts上,所以现在当用户更改路由时,所有连接都会收到取消,如果实现,它会关闭流。

这可能会有帮助,这可能会有帮助