尝试让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
。
答案 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。