1

HostingEnvironment.MapPath()私のWCFアプリで作業しようとすると、いくつかの問題が発生します。

HttpContext.Currentnullかどうかを確認する静的メソッドを持つクラスを作成しました。

public class ServerPath
{
    public static string MapPath(string path)
    {
        string result;
        if (HttpContext.Current != null)
            result = HttpContext.Current.Server.MapPath(path);
        result = HostingEnvironment.MapPath(path);

        return result;
    }
}

そして、私がそれを通過したものはすべてnull(ServerPath.MapPath(~/file.xml")およびServer.PathPath("./file.xml"))を返します。なぜ私が「文字列の結果」を持っているのか疑問に思っている人がいたら; それは私が追加if (string.IsNullOrEmpty(result))して追加したからですresult = Directory.GetCurrentDirectory() + path;

WCF テスト クライアントでテストするときに、このような問題を経験した人はいますか?

それがバインディングと関係があるかどうか、またはその例を見る必要があるかどうかを教えてください。

私が忘れる前に、私は私の中にも持ってい<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>ます。system.serviceModelapp.config

4

2 に答える 2

1

重複: HttpContext.Current.Server null

その質問からの答えを使用してください。

ソース: https://stackoverflow.com/a/6304591/1449777

Windows サービスが IIS またはその他の Web サーバー プロバイダーの傘下で実行されていないため、HttpContext.Current は null を返しています。

ただし、リフレクションを使用してサービスの実行パスを見つけることができます。

System.Reflection.Assembly.GetExecutingAssembly().Location ^ は、実行中のサービスのパスを返す必要があります..

于 2012-07-03T21:41:58.640 に答える
0

XML ファイルを埋め込みリソースにする場合は、アセンブリの名前を XML ファイルの名前に置き換えることができます。常にコピーを設定することを忘れないでください。

于 2014-10-22T00:24:23.383 に答える