WCF Web サービスから HttpContext.Current にアクセスする 質問する

WCF Web サービスから HttpContext.Current にアクセスする 質問する

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 が有効になっていない限り、サービスは起動に失敗します。

おすすめ記事