如何从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 web服务中访问文件

好的,在一个由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");
}