如何从ServiceHost托管的IIS web服务中访问文件
本文关键字:服务 web 访问 文件 IIS ServiceHost | 更新日期: 2023-09-27 18:15:27
在我的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
作为工作目录。
这个问题的最佳解决方案是什么?我想我不需要碰当前定义的工作目录
好的,在一个由ServiceHost类托管的IIS WCF服务中工作的解决方案是:
AppDomain.CurrentDomain.BaseDirectory + "/ConfigFile.json"
它给出了在我的IIS Express环境和已部署的IIS环境中有效的完整绝对路径。
您需要将IHostingEnvironment
注入到您的类中才能访问ApplicationBasePath
属性值
假设IHostingEnvironment
类型是env
,那么你可以使用
File.ReadAllText(env.WebRootPath + "/ConfigFile.json");
比如你有一个名为Read
的函数那么你可以使用
public void Read(IHostingEnvironment env)
{
File.ReadAllText(env.WebRootPath + "/ConfigFile.json");
}