【问题标题】:How do I properly access file system files via .net Web API?如何通过 .net Web API 正确访问文件系统文件?
【发布时间】:2019-11-26 23:48:55
【问题描述】:

我有一个共享 dll,它有一个应用配置设置来引用 html 正文的位置。该服务接受变量并替换 html 正文中的字符串。

dll 通过 ConfigurationManager 引用文件,如下所示:

File.ReadAllText(ConfigurationManager.AppSettings["HtmlBodyLocation"]);

我的应用设置是这样的:

<add key="HtmlBodyLocation" value="Services/Assets/HtmlEmail.html" />

当我通过 WebAPI 项目使用此 dll 时,我收到找不到文件的错误(当前错误是我仍在通过 IIS Express 测试它):

找不到路径“C:\Program Files (x86)\IIS Express\Services\Assets\HtmlEmail.html”的一部分

如何在我的 API 服务器上配置应用设置才能访问此文件?

【问题讨论】:

    标签: .net webapi


    【解决方案1】:

    将您的配置检索到的值传递给HostingEnvironment.MapPath

    string location = ConfigurationManager.AppSettings["HtmlBodyLocation"])
    var data = File.ReadAllText(HostingEnvironment.MapPath(location));
    

    这会将相对于 webapi 应用程序根目录的部分路径映射到目标机器上的物理路径

    您可能还需要将配置中存储的路径更改为

    <add key="HtmlBodyLocation" value="~/Services/Assets/HtmlEmail.html" />
    

    【讨论】:

    • 该库主要由控制台应用程序使用,因此我不确定是否可以让他们使用 Web.Hosting 库,也不确定它是否会起作用。我需要考虑使用其他东西吗?
    猜你喜欢
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    • 2021-06-19
    • 2016-09-18
    相关资源
    最近更新 更多