【问题标题】:Woking with files in relative paths in C# WebApi Projects - Debug and Published在 C# WebApi 项目中使用相对路径中的文件 - 调试和发布
【发布时间】:2018-01-21 20:39:35
【问题描述】:

我正在构建一个 Web 项目,我需要一些 txt 文件来使用 Azure 进行身份验证

string authFile = @"C:\absolutepath\myfile.auth";
            Environment.SetEnvironmentVariable("AZURE_AUTH_LOCATION", authFile);

问题在于绝对路径。它将在调试模式下工作,仅当路径相同时才发布。我已将这些文件添加到我的项目中,当我发布项目时,我可以在 zip 文件中看到它们。

使文件在 Debug 和 Published 中都可用的规范/更好的形式是什么?

【问题讨论】:

    标签: c# azure asp.net-web-api


    【解决方案1】:

    不要对文件路径进行硬编码

    使用配置文件为每个系统本身设置文件路径。

    • Visual Studio can easily create you config files
    • 或者在您的项目根目录中创建一个可选配置文件(即:appsettings.json)并尝试在启动时加载它以初始化您的应用程序设置。 但是如果你的程序没有找到这个配置文件,它会回退到你的硬编码默认值。请记住将此项目项的内容类型设置为“内容”,并将发布操作设置为“始终复制”或“如果较新则复制”

    此配置文件还可能包含您的 myfile.auth 文件中的内容。

    记住要正确地构建你的配置文件,让它存储不止一个信息。

    【讨论】:

    • VS 2017 上似乎没有这个工具
    • 我目前不在我的 Windows 机器上,但您应该通过 -> 项目(右键单击)-> 属性 -> 左侧面板:设置。
    【解决方案2】:

    我认为您可以检查请求类型。如果是本地请求,则使用绝对路径,否则使用规范路径。

    string authFile = "";    
    if (Request.IsLocal) {
    authFile = @"C:\absolutepath\myfile.auth"; //absolute path;
    }
    else {
    authFile = "server path" //canonical path
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多