如何在web.config中引用wwwroot路径文件 - Azure App service

时间:2017-08-18 22:53:14

标签: .net azure azure-web-sites .net-4.5 azure-web-app-service

我在Azure App服务中部署了.Net web api。我的日志文件夹位于WWWROOT文件夹中。 我的文件夹结构如下

↓WWWROOT
 >bin
 ↓Logs
  >TraceLog.log 
Web.Config

我想参考

  

TraceLog.log

web.config中的

路径。

我尝试了以下方式

fileName="%home%\site\wwwroot\Logs\TraceLog.log" 
fileName="C:\DWASFiles\Sites\[your websitnmame]\site\wwwroot\Logs\TraceLog.log"
fileName="C:\DWASFiles\Sites\[your-websitename]\VirtualDirectory0\Logs\TraceLog.log"
fileName="~\Logs\TraceLog.log"
fileName="\Logs\TraceLog.log"

但是得到了这个错误 enter image description here

3 个答案:

答案 0 :(得分:0)

我建议您在Azure存储上编写日志,而不是使用旨在为IIS和Web应用程序框架提供临时文件存储的本地存储。

答案 1 :(得分:0)

你做不到。他们设计它所以它不是很容易获得。 AppDomain.BaseDirectory或Environment.CurrentDirectory都没有指向那里......但您可以在%HOME%环境变量下找到它...但您必须在代码中调用ExpandEnvironmentVariables来引用路径或指定完整路径

您应该注意,您的web.config基本上被忽略,因为应用服务运行时有自己的web.config ...所以对路径的任何引用必须在您的代码中,而不是您的web.config

答案 2 :(得分:0)

正如Thiago Custodio和Jeff所说,我们可以轻松地使用代码。在您的情况下,请尝试使用以下代码。

string traceLogPath = Environment.GetEnvironmentVariable("HOME") + @"\site\wwwroot\logs\TraceLog.log";

作为Azure WebApp is sanbox d:\ home 可用于具有读/写访问权限的沙箱。天蓝色的文件结构请参阅此document

  

主目录访问(d:\ home)

     

每个Azure Web App都有一个由Azure Storage存储/支持的主目录。此网络共享是应用程序存储其内容的位置。此目录可用于具有读/写访问权限的沙箱。