2017-10-25 13 views
4

요청이 취소되면 서비스에 알리는 OWIN 웹 서비스 용 클라이언트를 만들려고합니다. 서비스는이 요청에 대해 현재 진행중인 작업도 취소 할 수 있습니다. 나는 "취소!"GET (나는 가장자리를 통해 API에 액세스하는 경우HttpClient 취소가 서버에 취소를 알리지 않음

[HttpGet] 
[Route("Get")] 
public int Get(CancellationToken ct) 
{ 
    Console.WriteLine("started!"); 

    while (!ct.IsCancellationRequested) 
    { 
    Thread.Sleep(500); 
    } 

    Console.WriteLine("canceled!"); 

    return 0; 
} 

이 작동 메시지를 최대한 빨리 로딩을 중단 같이 : 서버 측에

나는이 방법과 ApiController이 다른 곳으로 이동, 탭 닫기 또는 브라우저 닫기), 시도한 다른 모든 방법 (Chrome, Postman, HttpClient, HttpWebRequest)을 사용하면 CancellationToken이 취소되지 않습니다. Edge가 다른 모든 응용 프로그램과 다른 점은 무엇이며 HttpClient와 함께 작동 시키려면 어떻게해야합니까? GetAsync()를 CancellationToken으로 호출하고 취소하려고 시도했지만 HttpClient의 Dispose() 및 CancelPendingRequests() 메소드를 시도했지만 서버 측 취소가 발생하지 않았습니다. Nuget를 업데이트 한 후

+0

방금 ​​Owen을 위해 Nuget 패키지를 업데이트했고 이제는 작동하는 것 같습니다. 나중에 확인할 수 있으면 대답을 게시 할 것입니다. – user6314158

답변

1

은 가장자리에서뿐만 아니라 크롬과 HttpClient를에서뿐만 아니라 예상대로 v3.1.0에

Microsoft.Owin 
Microsoft.Owin.Host.HttpListener 
Microsoft.Owin.Hosting 
Microsoft.Owin.SelfHost 

이 취소 작동 패키지. 패키지를 v2.0.0으로 다시 다운 그레이드하여 다른 원인을 배제하고 새로운 버전이 문제를 해결했는지 확인할 수 있습니다. 그래도 업그레이드 전에도 Edge에서 작동하는 이유는 궁금합니다.