"访问路径' D:\\ Windows \\ system32 \\文件被拒绝" Azure Web App

时间:2017-09-21 03:51:38

标签: c# python azure azure-web-sites ironpython

我有一个使用IronPython的特定函数,在python代码中,它正在访问当前目录并创建一个临时文件。当它稍后尝试根据相对目录路径访问该文件时,它无法获取它并且我收到来自IronPython的错误信息     "Access to the path 'D:\Windows\system32\file is denied"('文件'是创建的唯一临时文件)。当我作为管理员在本地运行VS时,这一切都有效。如果我在本地运行它而不是管理员,我会收到同样的错误。当我将应用程序发布到Azure上的应用程序服务时,它会给我access denied错误。

非常感谢您,如果您有任何其他问题,请告诉我。

2 个答案:

答案 0 :(得分:2)

  

D:\ Windows \ system32 \ file被拒绝

它是在Azure WebApp上设计的。 Azure Web Apps(以及移动应用程序/服务,WebJobs和函数)在沙箱中运行。应用受到严格限制。如果我们想获得有关WebApp的更多信息,请参阅Azure Web App sandbox

  

主目录访问(d:\ home)

     

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

     

为方便我们的客户,沙箱在内核模式下实现动态符号链接,将d:\ home映射到客户主目录。这样做是为了消除客户在访问站点时继续引用自己的网络共享路径的需要。无论站点在哪里运行,或者在VM上运行了多少站点,每个站点都可以使用d:\ home访问其主目录。

     

本地目录访问(d:\ local)

     

每个Azure Web App都有一个临时的本地目录,当VM上不再运行时会删除该目录。 此目录是存储应用程序临时数据的地方。沙箱实现了一个动态符号链接,它将d:\ local映射到指向此目录。该应用程序自然具有对该目录的读/写访问权。

     

请注意,scm站点(Kudu运行的位置)中的d:\ local文件夹与主站点(运行Web应用程序的位置)中的d:\ local文件夹不同。结果,他们无法看到对方的本地文件。

答案 1 :(得分:0)

我不会把东西写到C:\ Windows \ system32,因为那些是操作系统文件。对于运行该程序的任何用户,我会更乐于写入本地临时目录: %USERPROFILE%\应用程序数据\本地\温度