在我的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
作为工作目录。
该问题的最佳解决方案是什么?我想我不必触摸当前定义的工作目录。
答案 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环境中有效的完整绝对路径。