2017-04-11 118 views
0

的App_Data文件的路径怎样才能路径到我的Web角色的App_Data -folder在辅助角色?Azure的辅助角色:获取Web角色

本地,从工作者角色调用,AppDomain.CurrentDomain.GetData("DataDirectory")返回web角色的路径App_data就好了。但是,在Azure服务器上,它返回null

我也试过(System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data"),它在本地以及服务器上都返回null

+0

问:你想这样做,为什么呢? –

+0

我需要工作人员角色定期下载Web角色使用的文件。 – sk904861

+0

因此,如果我理解正确,用户将上传一个文件,该文件将保存在Web角色中,然后您想要以该角色处理该文件。我的理解是否正确? –

回答

1

我相信这是不可能得到有关从辅助角色Web角色这一信息仅仅是因为他们在不同的机器上运行两个不同的应用。

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

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

有一件事你需要谨慎对待的是你将如何处理多实例方案,其中Web角色的多个实例,便拿起相同的文件。你会想要实现一些模式,只有一个Web角色的实例能够获取文件。