WCF から HttpContext を見たい!

どうやら ASP.NET コンパチモードってのがあるらしい。
まず、web.config に以下を追加

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

で、続いてサービスクラスの属性に以下を設定。

[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Required)]

で、こんな感じにコーディング。

var context = HttpContext.Current; //コンパチモードじゃない場合は null がかえる
var fileName = context.Request.MapPath("foo.txt");
return File.ReadAllText(fileName);

とれた!!!

まぁ、賛否両論はいろいろあるでしょうけど(WCFやのに・・・、とか HttpContext.Current ってとか)、確かにあまりよろしい感じではないのですが、とりあえず困った時の選択肢にでも。