gpt4 book ai didi

asp.net - 无法获取 Azure 应用服务中托管的 .NET 网站的临时目录

转载 作者:行者123 更新时间:2023-12-02 07:29:06 24 4
gpt4 key购买 nike

我们正在努力验证我们的 Loupe 服务是否作为 Azure 应用服务运行,但遇到了一个我们无法弄清楚的问题。任何尝试解析临时目录的操作都会失败,但有以下异常(exception):

    mscorlib : System.IO.IOException    The directory name is invalid.      at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)      at System.IO.__Error.WinIOError()      at System.IO.Path.InternalGetTempFileName(Boolean checkHost)

The stack trace has this within the .NET method for generating a temp file name. This stack trace is common to pretty much all the areas we get the failure. For a bit it seemed that if we forced the site to restart and/or forced the underlying App Service Plan to rescale it would go away until we next updated the site but no longer.

Since the only search results we could find said this error happens when impersonation is enabled and the user the site's impersonating doesn't have access to the IIS App Pool user's temp directory we've dug into that. First, we can confirm from our logging that the thread is not impersonating at the time the failed request is made. Second, just for fun we added this to the web.config to be doubly sure:

<system.web>        
<identity impersonate="false"/>
</system.web>

一切都无济于事。如果这是 Azure 应用服务的普遍问题,那么我认为它会破坏许多系统,所以我必须得出结论,我们做了一些令人着迷且错误的事情导致了这个问题。

最佳答案

这可能不是您正在寻找的确切答案,但它可能会帮助您指明正确的方向。

不久前我在使用 Azure 应用服务时遇到了类似的问题。我发现访问本地文件系统有些问题。有时效果很好,有时则不然。

最终,我发现实例化 Azure 应用服务时,它并不总是为其背后的系统使用相同的驱动器号。在某些情况下,这可能会导致环境变量明显不正确。他们“认为”它们设置正确,但情况并非总是如此。

生成临时文件名将使用该环境变量作为路径,如果将其设置为 C: 但计算机有 D: 驱动器,则会失败。 C: 驱动器不存在,因此临时文件的路径也不存在。

要确定这是否是问题所在,您需要启用 RDP,以便可以直接登录。 https://learn.microsoft.com/en-us/azure/cloud-services/cloud-services-role-enable-remote-desktop

这是我最终能够弄清楚的唯一方法。

关于asp.net - 无法获取 Azure 应用服务中托管的 .NET 网站的临时目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42379004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com