gpt4 book ai didi

azure - Windows Azure Environment.GetEnvironmentVariable ("RoleRoot") 读取访问被拒绝错误

转载 作者:行者123 更新时间:2023-12-03 00:17:07 27 4
gpt4 key购买 nike

我有一个 xml 文件,我想从中读取

string xmlTemplatePath = Path.Combine(Environment.GetEnvironmentVariable("RoleRoot") + @"\", @"approot\myxml.xml");

使用XDocument doc = XDocument.Load(xmlTemplatePath),但是我在云和开发环境中都遇到访问被拒绝的异常。任何想法为什么读取被拒绝?

最佳答案

我知道,旧线程......但答案可能对某人有用。

看起来 azure 工作进程在自定义用户下运行(在 taskmgr 中显示为 GUID)。该用户帐户似乎受到很大限制,并且没有对文件系统的读取访问权限(即使在 approot 目录内)。

我的解决方案是为 azure 角色创建一个启动脚本(请参阅 msdn article ),该脚本使用 icacls 添加访问文件的权限。在本例中,我在项目中创建了一个名为startup\Install.cmd的文件,其中包含以下内容:

@echo off

if "%EMULATED%"=="true" goto :EOF

echo Allowing access to files
cd directory_where_files_exist
icacls *.* /grant Everyone:F

在我的 ServiceDefinition.csdef 文件中,我通过将其放入角色定义(例如 )中来指示 Azure 部署系统在部署期间运行此启动脚本:

<Startup>
<Task executionContext="elevated" commandLine="startup\Install.cmd">
<Environment>
<Variable name="EMULATED">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
</Environment>
</Task>
</Startup>

变量“EMULATED”在模拟器运行时设置 - 请注意,在上面的startup/Install.cmd 文件中,如果在模拟器中运行,我会跳过执行权限更改。

关于azure - Windows Azure Environment.GetEnvironmentVariable ("RoleRoot") 读取访问被拒绝错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5822842/

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