13

顧客向けの Web およびモバイル アプリケーションを開発しています。私の現在のアーキテクチャでは、Web アクセスとモバイル アクセスの間で多くのリソースが共有されています。aspxページを Web に表示し、モバイル アプリで Web ビューを呼び出すことができます。私の質問は:

WebOperationContext.CurrentHttpContext.Currentオブジェクトはどう違いますか?

私の理解では同じオブジェクトですが、 WebOperationContext.Current が null になる場合があり、その理由がわかりません。

4

1 に答える 1

29

WebOperationContextメソッドが着信要求と発信応答にアクセスできるように、通常は WCF REST メソッドで使用されます。

HttpContext通常、着信要求と発信応答にアクセスできる場合に、ASMX Web サービスの ASP.NET WebForms ページまたは Web メソッドで使用されます。

これらはさまざまなプロジェクト タイプ (WCF REST/ASP.NET WebForms) 用に設計されているため、間違ったプロジェクト タイプで使用しないでください。

の値が である場合について.Currentnull、さらに複雑です。このプロパティを正しいプロジェクト タイプで呼び出している場合でも、呼び出しが適切なスレッドで行われていることを確認する必要があります。リクエストを処理する (レスポンスも送信する) スレッドでのみ、現在のコンテキストにアクセスできます。他のスレッド (バックグラウンド スレッド、または作成した新しいスレッド) では、null. これは何年も前から知られていますが、初心者はまだ時々間違っています。

于 2013-09-13T03:29:54.313 に答える