2017-04-11 119 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角色的實例能夠獲取文件。