![](/img/trans.png)
[英]Runtime error in VS 2013 Windows Azure regarding an assembly Microsoft.WindowsAzure.Storage.Emulator.Controller
[英]Windows Azure Queue - CloudQueue.GetMessage() not working for latest version of Microsoft.WindowsAzure.Storage (v5.0.0)
我是Azure的新手, 在這里嘗試教程。
本教程是關於在Azure上創建Cloud Service,利用Web角色委派任務到Worker Role。 唯一重要的部分; 當用戶將圖像上載到Web角色時,Web角色會將圖像放入Azure存儲中,並使用包含存儲圖像的URL的字段在數據庫中創建新記錄。 Web角色接下來在Azure隊列中放置一條消息(新添加的記錄的ID)。
var queueMessage = new CloudQueueMessage(id);
await _cloudQueue.AddMessageAsync(queueMessage);
然后,Worker Role將從隊列中檢索消息。 接下來,從數據庫中檢索記錄。 然后從檢索到的數據庫記錄的圖像URL創建縮略圖。
while (true) {
var msg = _cloudQueue.GetMessage();
if (msg != null) {
CreateThumbnail();
}
System.Threading.Thread.Sleep(1000);
}
本教程提供了指導
使用下載的源文件時,該解決方案工作正常。 在Worker Role中, var msg = _cloudQueue.GetMessage();
。
msg
總是有東西(不是null),雖然上傳圖像后會有3到4秒的延遲。 因此,在上傳圖像后3到4秒始終執行CreateThumbnail()
。
但是,如果我從頭開始創建解決方案,無論我等待多長時間並且從未執行過CreateThumbnail
, msg
始終為null。 我通過在這里和那里放置斷點來確保工作者角色確實在運行。
經過幾個艱苦的工作,我把問題歸結為程序集Microsoft.WindowsAzure.Storage
。 從教程頁面下載的解決方案源文件使用的是3.2.0版本,而從頭開始創建的解決方案使用的是NuGet的最新版本5.0.0。 所以按順序說,如果我在Worker Role上使用最新的5.0.0版本的Microsoft.WindowsAzure.Storage
, msg
總是為null。 這是一個已知問題還是我遺漏了一些東西。
對不起,你很難讓這個教程發揮作用。 我已經與教程的所有者核實了,並且最近更新了(大約9/1)。 請下載新版本的Visual Studio解決方案並再次嘗試。
有幾點需要注意,本教程的故障排除部分對此進行了概述:
從教程:
默認情況下,新的雲服務項目使用Azure計算模擬器來模擬Azure環境。 這是完整計算模擬器的輕量級版本,在某些情況下,當快速版本沒有時,完整模擬器將起作用。
若要更改項目以使用完整模擬器,請右鍵單擊ContosoAdsCloudService項目,然后單擊“屬性”。 在“屬性”窗口中,單擊“Web”選項卡,然后單擊“使用完全模擬器”單選按鈕。
要使用完整模擬器運行應用程序,必須使用管理員權限打開Visual Studio。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.