如何从ServiceHost

时间:2016-10-28 10:37:36

标签: c# asp.net file wcf iis

在我的IIS应用程序中,我打开一个位于wwwroot目录中的文件:

File.ReadAllText("ConfigFile.json");

IISExpress尝试在C:\Program Files (x86)\IIS Express\ConfigFile.json

中打开该文件

我认为wwwroot目录是工作目录,但显然情况并非如此。

Log4net日志文件是相对于工作目录和配置管理器文件编写的。所以我不明白为什么用System.IO.File打开文件我有C:\Program Files (x86)\IIS Express作为工作目录。

该问题的最佳解决方案是什么?我想我不必触摸当前定义的工作目录。

2 个答案:

答案 0 :(得分:0)

您需要将IHostingEnvironment注入您的班级才能访问ApplicationBasePath属性值

假设IHostingEnvironment类型为env,那么您可以使用

File.ReadAllText(env.WebRootPath + "/ConfigFile.json");

就像你有一个名为Read的函数那么你可以使用

public void Read(IHostingEnvironment env)
{
   File.ReadAllText(env.WebRootPath + "/ConfigFile.json");
}

答案 1 :(得分:0)

好的,由ServiceHost类托管的IIS WCF服务中的解决方案是:

AppDomain.CurrentDomain.BaseDirectory + "/ConfigFile.json"

它提供了在我的IIS Express环境和已部署的IIS环境中有效的完整绝对路径。