Azure Worker角色:获取Web角色的App_Data路径

时间:2017-04-11 10:45:30

标签: c# .net azure model-view-controller

如何在工作人员角色中获取我的网络角色App_Data - 文件夹的路径?

在本地,从职员角色调用,AppDomain.CurrentDomain.GetData("DataDirectory")返回网络角色App_data的路径就好了。在Azure服务器上,它返回null

我还尝试了(System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data"),它在本地和服务器上返回null

1 个答案:

答案 0 :(得分:1)

我认为不可能仅仅因为它们是在不同机器上运行的两个不同应用程序而从工作者角色获取有关Web角色的信息。

即使有可能这样做,我也会建议你反对。云服务(Web / Worker角色)是无状态的,因此两者之间不应存在任何依赖关系。此外,请考虑一种情况,即运行Web和工作者角色的多个实例。在这种情况下,这样的解决方案将如何运作。

您需要的是Web和辅助角色都可以访问的存储。一种可能的解决方案是使用Azure File Service。您可以做的是在Azure存储帐户中创建文件共享,然后将该文件共享映射为Web / worker角色中的网络驱动器。由于文件共享被映射为网络驱动器,因此您可以在此远程存储上执行标准IO操作(System.IO),就好像它本地可用。 Worker角色将收到一个文件。它将处理它,然后将其保存在该文件共享中。 Web角色可能会实现某种File System Watcher,它会监视这些文件,并在删除任何新的/更改的文件时将其拾取。

您需要谨慎的一件事是如何处理多实例场景,其中多个Web角色实例将获取相同的文件。您可能希望实现一些模式,其中只有一个Web角色实例能够获取文件。