2013-05-12 17 views
3

我有這個解決方案,完美地在我的開發工作站上使用Visual Studio 2012 .Net 4.5。沒有IIS更改。它基本上是C#,它抓取一個網頁並將其轉換爲bmp。我不確定如果我的問題是我正在嘗試寫入文件系統。Azure 502錯誤..嘗試新的WebBrowser()和/或image.Save()

這就是我在Azure中獲得的。我正在閱讀它可能是Azure的限制/限制(如果是這種情況非常失望)

502 - Web服務器在充當網關或代理服務器時收到無效響應。

我想我的問題與此代碼:

public Bitmap GenerateThumbnail() 
    { 
     Thread thread = new Thread(new ThreadStart(GenerateThumbnailInteral)); 
     thread.SetApartmentState(ApartmentState.STA); 
     thread.Start(); 
     thread.Join(); 
     return ThumbnailImage; 
    } 
    private void GenerateThumbnailInteral() 
    { 
     WebBrowser webBrowser = new WebBrowser(); 
     webBrowser.ScrollBarsEnabled = false; 
     if (this.Method == ThumbnailMethod.Url) 
      webBrowser.Navigate(this.Url); 
     else webBrowser.DocumentText = this.Html; 
     webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted); 
     while (webBrowser.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents(); 
     webBrowser.Dispose(); 
    } 

或可能與image.save(這可能是一個問題,下一個)。

image.Save(Server.MapPath("~") + "/output/"+filename); 

我們是低預算,並試圖保持我們的託管網站簡單和便宜。寧願不必構建工作進程或使用Azure的存儲功能。

===

UPDATE:

我不認爲我的問題是保存,但的確認爲,這將是在Azure上的問題。此外,作爲測試,我創建了一個處理程序ashx,它將圖像流返回給html img標記。這在當地也很有用,但在Azure上,我只獲得紅色的X。不知道這是怎麼回事。

回答

2

您基本上沒有權限在Azure中執行寫入本地目錄而不分配它們的權限。

但這個問題有很多解決方案。

設置您的啓動任務爲目錄分配權限。 值得一讀。 WindowsAzure: Is it possible to set directory permissions within the web.config?

如果您需要臨時本地驅動器,那麼這是首選方法。

http://msdn.microsoft.com/en-us/library/windowsazure/ee758708.aspx

如果你需要一個持久存儲,然後Blob存儲將是最好的選擇。

http://www.windowsazure.com/en-us/develop/net/how-to-guides/blob-storage/

你可以相信也是一個驅動器連接到像VHD的計算,但我不知道如果兩個單位計算既可以寫入到驅動器在同一時間,所以你會也許最好使用BLOB存儲如果你需要保存數據。

Blob存儲超級便宜。

thths,James

+0

感謝您的回覆。我很確定我的錯誤是Azure上的WebBrowser控件。對於我期待的文件存儲問題。我想如果我可以,我寧願不寫這個文件,也許從我以前能夠做的一個流中重寫它。 img指向重寫圖像流的頁面。不確定Azure是否會允許這樣做..需要測試它,但WebBrowser仍然存在問題。 – o365spo 2013-05-12 22:04:18