在Azure WebApp上的asp.net类库项目中获取文件路径

我有一个类库,其中我使用下面的代码从应用程序路径访问文件。它不会在azure上工作,因为它无法找到应用程序路径。因为它可以在我的本地机器上正常工作,所以如何使它工作在天蓝色。在Azure WebApp上的asp.net类库项目中获取文件路径

private string GetProjectPath() 

{

string SolutionName = "MyApi.sln";

//Get name of the target project which we want to test

var projectName = typeof(TerminationMatchInquiry).GetTypeInfo().Assembly.GetName().Name;

//Get currently executing test project path

var applicationBasePath = new Uri((typeof(TerminationMatchInquiry).GetTypeInfo().Assembly.CodeBase)).LocalPath;

//Find the folder which contains the solution file. We then use this information to find the

//target project which we want to test

DirectoryInfo directoryInfo = new DirectoryInfo(applicationBasePath);

do

{

var solutionFileInfo = new FileInfo(Path.Combine(directoryInfo.FullName, SolutionName));

if (solutionFileInfo.Exists)

{

return Path.GetFullPath(Path.Combine(directoryInfo.FullName, projectName));

}

directoryInfo = directoryInfo.Parent;

}

while (directoryInfo.Parent != null);

throw new Exception($"Solution root could not be located using application root {applicationBasePath}");

}

回答:

为了获得在你的web应用一个确切的文件路径,您可能需要有试验和错误。

下面的代码是我在ASP.NET项目中使用的。假设您有一个名为scenariosfilename变量的文件夹;

string rootPath; 

if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("HOME")))

rootPath = Environment.GetEnvironmentVariable("HOME") + "\\site\\wwwroot\\bin";

else if (HttpContext.Current != null)

rootPath = HttpContext.Current.Server.MapPath("~");

else

rootPath = ".";

string path = rootPath + "\\scenarios\\" + filename;

让我们看看每个条件的值;

  1. Environment.GetEnvironmentVariable("HOME"):此值适用于Azure WebApp。 Azure WebApp具有主机根目录的默认环境变量。您可以检查提供的变量为here

  2. HttpContext.Current:此值用于在桌面上进行开发时使用OWIN selfhost进行iisexpress。

  3. rootPath = ".";此值适用于传统IIS。

所以,最好的捷径,找到已发布的文件路径可能是,

  1. 请参阅文件以及部署在Web应用程序。您可以使用WebApp > Advanced Tools (a.k.a Kudu) menu > Debug Console menu on top > CMD查看已发布的文件。它会在浏览器上向您展示类似浏览器的界面。
  2. 尝试写入类似filepath的日志; Environment.GetEnvironmentVariable("HOME") + "\\site\\wwwroot\\bin\\" + yourdirectory + "\\" + SolutionName并检查文件是否已成功加载。

以上是 在Azure WebApp上的asp.net类库项目中获取文件路径 的全部内容, 来源链接: utcz.com/qa/260618.html

回到顶部