HostingEnvironment.MapPath(path)在WCF应用程序中返回null

时间:2012-07-03 21:24:42

标签: c# wcf

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

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

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.serviceModel内也有app.config

2 个答案:

答案 0 :(得分:1)

重复:HttpContext.Current.Server null

使用该问题的答案。

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

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

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

System.Reflection.Assembly.GetExecutingAssembly()位置。 ^应返回正在执行的服务的路径..

答案 1 :(得分:0)

如果将XML文件设置为嵌入式资源,则可以使用XML文件的名称替换程序集的名称。别忘了设置Copy Always。