2012-08-14 51 views
7

我已經嘗試了一些Windows Azure實驗,並且工作正常。所以,我開始使用Azure Emulator開發我的應用程序。Windows Azure結束連接並返回一個324錯誤代碼

我執行我的第一個部署測試今天在Windows Azure和擁有第一個問題:

No connection could be made because the target machine actively refused it 127.0.0.1:10000 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:10000 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 


[SocketException (0x274d): No connection could be made because the target machine actively refused it 127.0.0.1:10000] 
    System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) +2724507 
    System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception) +392 

[WebException: Unable to connect to the remote server] 
    Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result() +96 
    Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.ExecuteAndWait() +271 
    Microsoft.WindowsAzure.StorageClient.CloudBlobContainer.Delete(BlobRequestOptions options) +213 
    MyProject.Web.MvcApplication.InitBlobs() in C:\Sites\MyProject\MyProject\MyProject.Web\Global.asax.cs:85 
    MyProject.Web.MvcApplication.Application_Start() in C:\Sites\MyProject\MyProject\MyProject.Web\Global.asax.cs:52 

這是第一次部署,所以我試圖刪除一個不存在的容器。 我現在處理異常。

我重新部署我的項目,並沒有得到任何服務器錯誤。它只是結束連接,並給我這個錯誤:Error 324 (net::ERR_EMPTY_RESPONSE)

我假設我錯過了我的配置中的東西,但我無法找到它究竟是什麼。

謝謝你的幫助!

編輯: 部署本身是此應用程序的第一個應用程序,但它不是我在Windows Azure上執行的第一個應用程序。當我開始爲Windows Azure開發時,我已經部署了一些msdn實驗室。

+0

我從發現任何參考堆棧跟蹤,它看起來像你打電話給來自global.asax.cs的Blob存儲 - 你可以嘗試從控制器動作中做到這一點,而不是看看你是否得到相同的錯誤?另外,我看到消息「無法連接到遠程服務器」。您確定帳戶名稱和帳戶密鑰是否準確,並且都來自同一個存儲帳戶?我搞砸了,得到奇怪的錯誤... – 2012-08-15 05:07:50

+0

我嘗試在我的'HomeController'中移動blob存儲的調用,但它不會改變任何東西。我已經檢查了我的憑證。它們都與同一個帳戶有關。我還嘗試將我的connexion字符串直接放在'global.asax'方法中,而不是調用'configuration manager'的鍵,但它不起作用。我無法理解的是爲什麼當我使用Windows Azure時應用程序嘗試連接到「127.0.0.1:10000」 – Florent 2012-08-15 15:04:54

回答

3

好吧,我弄清楚我的錯誤是什麼。

在我的抽象慾望中,我設計了一個解決方案,我在應用程序中只用了很短的時間就使用了blob連接。有3個電話給blob存儲。

  • 一個在我Global.asax
  • 一個在BlobService
  • 一個在ExtensionMethod

我檢查了好幾次我的Global.asax和BlobService卻忘了ExtensionMethod。我寫在我的項目的開始,我訪問我的BLOB的帳戶只能在發展可通過以下指令:CloudStorageAccount.DevelopmentStorageAccount代替CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("BlobConnection"))

克里斯Koening answer的是部分正確的,因爲我試圖訪問開發存儲,而我是在雲端。如果你有同樣的問題,在這個問題上形容,我的建議是:

  1. 執行克里斯回答
  2. 如果不解決您的問題,試圖找到在通過Visual Studio中的整個解決方案的DevelopmentStorageAccount串搜索工具或Agent Ransack並用鑰匙替換你在第一步
  3. 定義如果仍然不能解決問題,請嘗試找出是否有到DevelopmentStorage其他地方
+1

當我嘗試在使用Azure存儲模擬器的本地主機上運行時遇到了同樣的錯誤。它發生在調用「container.CreateIfNotExists()」。事實證明,在我的情況下,模擬器沒有啓動。右鍵單擊Azure任務欄圖標,然後單擊啓動存儲模擬器。一旦開始,它工作正常。 – newman 2014-06-06 21:23:06

0

您的問題是特定於您的計算機上安裝的組件,而不是Windows Azure Specific。我可以提供一些指示來解決這個問題,但是很難確定一個特定的根本原因。

你可以做什麼,它只是從模板直接創建一個非常簡單的Web角色應用程序,然後在Windows Azure模擬器中運行它,看看是否工作正常。這樣你就可以區分你的問題是否與你的代碼相關。如果您使用簡單的測試應用程序時遇到完全相同的問題,那麼您的問題更多的是與Windows Azure相關的組件。

您還可以修改您的應用程序設置以在IISExpress(默認)或IIS服務器上運行,以查看問題行爲是否有變化。如果您在IIS服務器和IIS Express上都得到完全相同的錯誤,那麼您可以專注於Windows Azure組件來解決問題。

+0

我忘了提及它,我已經從msdn部署了一些實驗室,它工作得很好。 – Florent 2012-08-14 18:40:43

5

好的 - 我能夠重現這一點,問題在於您的雲部署項目的配置。

My version of the error

我得到這個錯誤的原因是因爲我設置存儲連接字符串,使其指向"UseDevelopmentStorage=true;"。相反,您需要使用您的Azure的部署項目的連接字符串工具更改其中ConfigurationManager得到它的連接字符串,並有一個地方發展和另一個用於部署到雲:

  • 打開Windows Azure項目並找到角色節點。您WebRole項目
  • 雙擊打開配置面板
  • 點擊設置標籤,以示對你的項目中定義的所有不同的設置。你可能會看到這樣的事情:

Configuration Panel

  • 通知的Service Configuration組合框頂部。我的設置(如圖中所示)目前指示StorageConnectionString設置將應用於兩個雲和本地部署。那很糟。
  • 看到它下面的那個?第二個?該值在Value列中顯示<Select Configuration>,因爲該值將取決於您正在運行的配置。

爲了解決這個問題,這是改變服務配置Cloud,然後調整設置的問題:

  • 變化在年底Service Configuration設置
  • 點擊省略號的StorageConnectionString設置並選擇輸入存儲憑據

Configuration Settings

  • 保存此對話框,並配置設置頁面,並在您創建CloudStorageAccount客戶端返回到你的代碼。
  • 在你需要得到連接字符串創建客戶端的位置,使用下面的代碼片段:

    //從連接字符串 CloudStorageAccount storageAccount = CloudStorageAccount.Parse存儲賬戶( CloudConfigurationManager.GetSetting ( 「StorageConnectionString」));

  • storageAccount現在根據您是發佈到雲還是本地,從正確的連接字符串加載。

當部署嚮導運行時,它將在雲拉設置自動,同時保留本地設置在調試器中運行。

試試這個,讓我知道它是否不適合你。我很樂意參加一個Lync會議來瀏覽你的代碼,並且如果你打開這個代碼就可以解決這個問題...

+0

我已經在不同配置中定義了我的存儲憑證(我有三種配置,一種用於本地開發,一種用於測試,另一種用於生產,測試和生產用於區分Windows Azure帳戶)。我懷疑是有連接到本地主機的嘗試,所以我嘗試直接在我的應用程序中對我的測試憑據進行硬編碼,在Windows Azure中運行它,但我仍然遇到同樣的問題。 – Florent 2012-08-15 19:22:37

+0

我正在通過RoleEnvironment而不是CloudConfigurationManager訪問我的設置,如下所示:'CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(「BlobConnection」));'。我真的不希望這會改變任何事情,但我已經在嘗試你的方法來調用設置。我正在Azure上部署我的項目,並讓您知道是否有任何更改。 – Florent 2012-08-15 19:23:48

+0

我測試的新部署仍然不會改變任何內容。我也嘗試將我的測試憑據放入本地連接字符串中,而不是UseDevelopmentStorage = true。它計算,但我保存在容器中的blob(應該在我的測試帳戶blob中)存儲在存儲模擬器中。我檢查調試模式,從雲設置中拉出的字符串是我的測試連接字符串。所以,我不明白爲什麼沒有提出任何錯誤,以及爲什麼我將我的blob保存在我想要的其他位置。 – Florent 2012-08-15 20:30:42