1

在尝试HostingEnvironment.MapPath()使用我的 WCF 应用程序时遇到一些问题。

我创建了一个带有静态方法的类来检查是否HttpContext.Current为空:

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")and 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 空

使用该问题的答案。

来源:https ://stackoverflow.com/a/6304591/1449777

HttpContext.Current 返回 null 因为您的 Windows 服务未在 IIS 或其他一些 Web 服务器提供程序的保护下运行。

但是,您可以使用反射找到服务的执行路径:

System.Reflection.Assembly.GetExecutingAssembly().Location ^ 应该返回执行服务的路径。

于 2012-07-03T21:41:58.640 回答
0

如果使 XML 文件成为嵌入式资源,则可以将程序集的名称替换为 XML 文件的名称。不要忘记设置总是复制。

于 2014-10-22T00:24:23.383 回答