我构建了一个ASP.NET Core api应用程序,它部署到Azure web api应用程序。 在代码中,我尝试在某个时刻读取内容根目录中的文件内容,为某些占位符插入实际值。
现在在我的本地系统上这很好用,因为它能够获得文件的确切文件路径,但是在云端,我得到一个例外,其中包含以下消息:
无法找到路径的一部分......
我得到完整的文件路径:
Path.Combine(hostingEnvironment.ContentRootPath, "containing directory\filename")
但这在云中失败了。在理解云部署中的目录结构方面,我是否应该知道有关部署此内容或我做错了什么?
N.B 我可以将此文件存储在Azure文件存储容器中,但我觉得阅读它会有太多麻烦,而且看到这个文件的成本会经常被读取。
答案 0 :(得分:2)
无法找到路径的一部分......
根据例外情况,它表示Azure中没有相关路径。如果可能,我们可以remote debug Azure Web Apps。然后我们可以得到文件路径。之后我们可以使用Azure kudu(https://yoursite.scm.azurewebsites.net)工具来检查路径是否存在。
如果文件路径不存在,我们可以直接将文件夹拖到kudu工具,或者我们也可以用Visual Studio发布文件夹。之后它应该有效。
我们可以获得有关Azure Web App sandbox的更多信息。关于Azure网站文件结构,请参阅document
/
LogFiles
Application
<instance>-<pid>-<ticks>.txt // application (nodejs/dotnet/php) traces
DetailedError
ErrorPage####.htm // error details
Git
trace
trace.xml // Trace generated during git deployments
<instance>-<guid>.txt // kudu related traces
deployment
<instance>-<guid>.txt // deployment related traces
http
RawLogs
<logfile>.log // iis http log. iis buffers and flushes every 60sec.
W3SVC#####
fr####.xml // IIS fail request traces
freb.xsl
site
wwwroot
hello.htm // The files that are live in your app
repository // Your repo, including working files (i.e. not bare)
.git
HEAD, index and other git files
deployments
[commit id 1]
log.xml // The deployment log, similar to what the protal shows
status.xml // The status of the deployment (success/failure)
manifest // The list of files that were deployed
[commit id 2]
...
.ssh
config // This contains config to disable strict host checking
id_rsa // private key in PEM format
known_hosts // known hosts have been accepted
Data
Jobs
Triggered
MyTriggeredJob1
20131112101559
output.log
error.log
status
Continuous
MyContinuousJob1
job.log
status
SiteExtensions
// TODO: add details here