我的 Azure 临时文件在哪里?

rar*_*rrr 6 asp.net azure

我在 Azure Web 应用程序上遇到了一个让我感到困惑的 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)
Run Code Online (Sandbox Code Playgroud)

错误本身是有道理的——它只是一个生成的具有语法错误的 razor 文件。令我困惑的是生成文件的位置

此 Web 应用程序正在运行单个实例。然而,当我去 kudu 寻找应用程序并浏览时,我找不到那个路径。相反,我看到:

D:\local\Temporary ASP.NET Files\root>ls
6260ae3c
Run Code Online (Sandbox Code Playgroud)

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

小智 11

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

这意味着每个 Web 应用程序将看到不同的 D:\local,这也许并不奇怪。然而,真正的技巧是 KUDU 本身作为一个单独的进程运行,并获得自己的私有 D:\local。因此,您实际上是在浏览 KUDU 的私有 D:\local 而不是您的应用程序的私有 D:\local。

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

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

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