我尝试使用Azure模拟器运行我的Azure应用程序。我添加了一个辅助角色,并且我已经覆盖了方法Run()。
在我的代码中,我需要辅助角色或项目的物理路径。
我尝试使用Environment.GetEnvironmentVariable(" TempFolder")和HttpRuntime.AppDomainAppPath但两者都返回null。
您是否有任何建议可以获得工作者角色Run()的物理路径?
答案 0 :(得分:1)
工作者角色不会保留临时文件夹,因此不建议使用它们。对于本地存储,您应使用Local Resources。您必须提前配置这些资源。
要获取实际的文件夹路径,请使用以下代码:
RoleEnvironment.GetLocalResource("ResourceName").RootPath;
Where" ResourceName"是已配置的本地资源的名称。
更多说明here
答案 1 :(得分:0)
可以使用 RoleRoot环境变量访问Azure辅助角色的物理文件夹/路径 - 这适用于本地部署(即在Debug中运行)和Azure本身。请注意,通过Visual Studio添加到Worker Roles的所有内容都位于AppRoot文件夹下。
例如,如果你在Visual Studio中有这个:
MyWork.AzureWorkerProject
-- Roles
---- MyWork.AzureWorkerProject.WorkerRole
------ images
-------- test.png
以下代码应返回test.png的正确文件路径,无论您是在本地还是在云中运行。
string appRoot = Environment.GetEnvironmentVariable("RoleRoot");
string fullPath = Path.Combine(appRoot + @"\", @"AppRoot\images\test.png");