7

非同期操作が呼び出されOperationContextた後 (およびスレッド ID が変更された後) に nullを取得することに問題があります。

私はこれが既知の問題であることを知っており、この問題に関していくつかの StackOverflow の質問を投げかけました。

ここで.net 4.6.2読むことができるように、問題の修正があります。

OperationContext.Current 非同期の改善

WCF には、OperationContext.Current を ExecutionContext に含める機能が追加され、OperationContext が非同期の継続を通過できるようになりました。この改善により、WCF は CurrentContext をあるスレッドから別のスレッドに伝達できるようにします。これは、OperationContext.Current の呼び出しの間にコンテキスト スイッチがあったとしても、その値はメソッドの実行中に正しく流れることを意味します。

これを自分の側でサポートしてもらうために何か特別なことをする必要がありますか? 私はVS 2013を使用しており、フレームワークを更新し4.6.2てdev-packをインストールしました。プロジェクトを使用するように変更しましたが、非同期呼び出しの後でFramework 4.6.2も nullが返されます。OperationContext

4

3 に答える 3

0

あなたが説明している動作は、なんとか.NET 4.6.2 リリースになりましたが、私たちはそれを認識しています。実際、私たちはこの問題の修正を展開中であり、今後数か月以内に一般公開される予定です。

今のところ既知の回避策は、フレームワークのバージョン 4.6.1 に戻すか、次のようなことを行うことです。

OperationContext ocx = OperationContext.Current;

using (new OperationContextScope(OperationContext.Current))
    {
        OperationContext.Current = new OperationContext(ocx.Channel);
        // ...
    }

さらにご質問やご意見がございましたら、お知らせください。

于 2016-09-27T19:18:50.287 に答える