8

我在 Windows Azure 中尝试了一些实验室,效果很好。因此,我开始使用 Azure Emulator 开发我的应用程序。

我今天在 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 实验室。

4

3 回答 3

6

好的 - 我能够重现这一点,问题在于您的云部署项目的配置。

我的错误版本

我收到此错误的原因是因为我将存储连接字符串设置为指向"UseDevelopmentStorage=true;". 相反,您需要使用 Azure 部署项目中的连接字符串工具来更改ConfigurationManager获取其连接字符串的位置,并使用一个用于本地开发和另一个用于部署到云:

  • 打开您的 Windows Azure 项目并找到角色节点。
  • 双击您的 WebRole 项目以打开配置面板
  • 单击“设置”选项卡以显示为您的项目定义的所有不同设置。你可能会看到这样的东西:

配置面板

  • 注意Service Configuration顶部的组合框。如图所示,我的设置当前表明该StorageConnectionString设置将应用于云和本地部署那很糟。
  • 看到它下面的那个了吗?第二个?该值显示<Select Configuration>在“值”列中,因为该值将取决于您正在运行的配置。

要解决此问题,只需将服务配置更改为Cloud然后调整设置:

  • Service Configuration将设置更改为
  • 单击设置末尾的省略号,StorageConnectionString然后选择Enter storage credentials

配置设置

  • 保存此对话框和配置设置页面,然后返回创建CloudStorageAccount客户端的代码。
  • 在您需要获取连接字符串以创建客户端的地方,使用以下代码段:

    // 从连接字符串中检索存储帐户 CloudStorageAccount storageAccount = CloudStorageAccount.Parse( CloudConfigurationManager.GetSetting("StorageConnectionString"));

  • 现在storageAccount根据您是发布到云还是本地,从正确的连接字符串加载。

当部署向导运行时,它将自动拉入设置,同时保留本地设置以在调试器中运行。

试试这个,让我知道它是否不适合你。如果您愿意,我很乐意参加 Lync 会议来浏览您的代码并解决此问题...

于 2012-08-15T16:44:09.617 回答
4

好的,我知道我的错误是什么。

出于对抽象的渴望,我设计了一个解决方案,我在我的应用程序中只使用了很少的 blob 连接。有 3 次调用 blob 存储。

  • 我的一个Global.asax
  • 一个在一个BlobService
  • 一个在一个ExtensionMethod

我检查了几次我的 Global.asax 和 BlobService,但忘记了 ExtensionMethod。我在项目开始时编写了它,并且仅在开发中通过以下说明访问我的 blob 帐户:CloudStorageAccount.DevelopmentStorageAccount而不是CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("BlobConnection"))

Chris Koening 的回答部分正确,因为我在云端时试图访问开发存储。如果您在这个问题中描述了同样的问题,我的建议是:

  1. 执行克里斯回答
  2. 如果它不能解决您的问题,请尝试通过 Visual Studio 搜索工具或Agent RansackDevelopmentStorageAccount在您的整个解决方案中查找该字符串,并将其替换为您在第一步中定义的密钥
  3. 如果它仍然不能解决您的问题,请尝试查找其他任何地方是否有任何对 DevelopmentStorage 的引用
于 2012-08-16T13:34:08.030 回答
1

您的问题是特定于您机器上安装的组件,而不是特定于 Windows Azure。我可以提供一些提示来解决此类问题,但是很难确定一个特定的根本原因。

你可以做的是直接从模板创建一个非常简单的 Web 角色应用程序,然后在 Windows Azure 模拟器中运行它,看看它是否工作正常。这样您就可以区分您的问题是否特定于您的代码。如果您在一个简单的测试应用程序中遇到完全相同的问题,那么您的问题更多与 Windows Azure 组件有关。

您还可以修改您的应用程序设置以在 IISExpress(默认)或 IIS 服务器上运行,以查看问题行为的变化。如果 IIS 服务器和 IIS Express 都出现完全相同的错误,则可以专注于 Windows Azure 组件来解决问题。

于 2012-08-14T17:41:11.217 回答