このMSDN の記事には次のように書かれています。
HttpContext: Current is always null when accessed from within a WCF service. Use RequestContext instead.
私がやろうとしているのは、IIS でホストされている WCF サービスからいくつかの XSD ファイルをロードすることです。問題は、次のような古いバニラ ASP.NET Web サイトのように Server.MapPath() を実行する方法がわからないことです。
HttpContext.Current.Server.MapPath(schemaUri);
IIS がホストする WCF サービスで RequestContext を使用する同等の方法は何でしょうか?
スキーマは、サービス アプリケーションのルートにある "Schemas" ディレクトリにあります。これらは、次のように web.config のカスタム構成セクションを使用して参照されます。
<schemas>
<add uri="~/Schemas/foo.xsd" xmlNamespace="http://foo.bar/types" />
</schemas>
そして、私はこのようにロードしようとしていました:
var schemaUri = HttpContext.Current.Server.MapPath(schema.Uri);
これは、IIS がホストする WCF サービスではなく、通常の ASP.NET Web サイト内から正常に機能します。