2017-10-25 12 views
4

要求がキャンセルされた場合にサービスに通知するOWIN Webサービスのクライアントを作成しようとしているため、この要求に対して現在進行中の作業も取り消すことができます。サーバー側でHttpClientのキャンセルでサーバーにキャンセルが通知されない

私はこの方法でApiControllerを持っている:

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

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

    Console.WriteLine("canceled!"); 

    return 0; 
} 

私はエッジを経由してAPIにアクセスする場合、それは、(私はできるだけ早く私はロードを中止として「キャンセル!」メッセージが表示されます動作しますタブを閉じたりブラウザを閉じたりすることができますが、私が試みた他の方法(Chrome、Postman、HttpClient、HttpWebRequest)でCancellationTokenはキャンセルされません。 Edgeは他のすべてのアプリケーションと何が違うのですか?また、HttpClientで動作させるために何ができるのでしょうか?私はCancellationTokenでGetAsync()を呼び出してキャンセルしようとしましたが、Dispose()とHttpClientのCancelPendingRequests()メソッドを試しましたが、いずれもサーバー側の取り消しを引き起こしませんでした。

+0

Owin用のNugetパッケージを更新しましたが、今はうまくいくようです。もし私がそれを確認できれば、後で回答を投稿します。 – user6314158

答えて

1

エッジから、だけでなく、ChromeとのHttpClientからだけではなく、期待通りV3.1.0にNugetパッケージ

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

を更新した後、キャンセルは動作します。私はパッケージをもう一度v2.0.0にダウングレードして、他の原因を除外し、新しいバージョンが問題を解決したことを確認できます。私はまだそれがアップグレードの前であってもEdgeで働いたのは不思議です。

関連する問題