我的 Azure 临时文件在哪里?

我的 Azure 临时文件在哪里?

我在 Azure Web App 上遇到了一个令我困惑的 raygun 错误。

d:\local\Temporary ASP.NET Files\root\8c572dab\d52156ac\
App_Web_636035960914530576dbc451921d-d5ba-4ab9-ae23-
3aebe17a2fcd.cshtml.ae8ccf29.453z6dsh.0.cs(151): 
error CS1528: Expected ; or = (cannot specify constructor arguments in declaration)

这个错误本身是有道理的——它只是一个生成的razor文件,有一个语法错误。它是地点生成的文件令我困惑。

此 Web 应用程序正在运行单个实例。但是,当我转到 kudu 查找应用程序并浏览时,我找不到该路径。相反,我看到:

D:\local\Temporary ASP.NET Files\root>ls
6260ae3c

我是否遗漏了 Azure 的一些基本知识?如果此 Web 应用能够扩展到多个实例,我就会明白我可能使用 kudu 访问了错误的实例。但由于只有一个实例,我真的不明白。

答案1

Azure Web 应用的临时文件位置似乎始终是 D:\local\Temp。但是,Azure 将整个 D:\local 文件夹安装在每个 Web 应用的不同位置。

这意味着每个 Web 应用程序将看到不同的 D:\local,这也许并不太令人惊讶。然而,真正的诀窍是 KUDU 本身作为单独的进程运行,并拥有自己的私有 D:\local。因此,您实际上是在浏览 KUDU 的私有 D:\local,而不是您的应用程序的私有 D:\local。

某些人肯定已经意识到这在调试场景中可能是一个问题,因此有办法避免这种情况:向您的应用程序添加名为“WEBSITE_DISABLE_SCM_SEPARATION”且值为“true”的应用程序设置通过 Azure 门户。

应用程序重新启动后,使用 KUDU 时您应该能够看到与您的应用程序相同的 D:\local(包括临时文件)。

完成后您可能应该关闭此设置,因为默认分离可能是有原因的。

答案2

刚刚找到了(官方)来源,并进一步澄清了WEBSITE_DISABLE_SCM_SEPARATIONOle Tolshave 的回答

Kudu 维基页面:了解 Azure 应用服务文件系统

另一个重要提示是,主站点和 scm 站点不共享临时文件。因此,如果您从站点向其中写入一些文件,您将无法从 Kudu 控制台看到它们(反之亦然)。如果禁用分离(通过 WEBSITE_DISABLE_SCM_SEPARATION),您可以让它们使用相同的临时空间。但请注意,这是一个遗留标志,不建议/支持它的使用。

相关内容