在C#WebApi项目中调用相对路径中的文件 - 调试和发布

时间:2018-01-21 20:39:35

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

不要硬编码文件路径

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

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

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

请记住正确构建配置文件,使其不仅可以存储一个信息。

答案 1 :(得分:0)

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

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