ASP.NET AJAX で WCF サービスを使い始めました。Javascript から WCF サービスをインスタンス化し、文字列変数を引数として WCF サービス メソッド (OperationContract 署名付き) に渡します。次に、カスタム Javascript クラスにバインドされた .NET オブジェクト (DataContract で定義) を返します。Web セッションにログインしたユーザーに基づく認証で問題が発生しています。ただし、WCF Web サービスは HttpContext.Current オブジェクトとはまったく異なるサービスであり、コンテキストがありません。そのオブジェクトにアクセスする最も安全な方法は何ですか?
ベストアンサー1
HttpContext.Current
できれば設定経由で AspNetCompatibility を有効にすることでアクセスできます。
<configuration>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel>
</configuration>
これにより、現在のユーザーにアクセスできるようになります。HttpContext.Current.User
これが目的ですよね?
サービス クラスを追加属性で装飾することで、AspNetCompatibility を強制することもできます。
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
(System.ServiceModel.Activation
名前空間内) その属性が設定されている場合、AspNetCompatibility が有効になっていない限り、サービスは起動に失敗します。