发布到 Azur 失败,出现 500 内部服务器错误

Publish to Azur fails with 500 internal Server Error

我在 Windows Azure 上有一个云服务,我创建了一个 Asp.net WebAPI 项目并发布到云服务,在我更新之前从 Visual Studio 到发布都运行良好visual studio 将 4 和 azure SDK 2.2 更新到 2.6。但是在我发布时更新后,我收到以下错误消息。我试了几次,都失败了。谁能帮帮我?

即使我无法在新的 Azure 服务上发布新创建的项目!

11:00:31 PM - Warning: There are package validation warnings.

11:00:31 PM - Checking for Remote Desktop certificate...

11:00:39 PM - Preparing deployment for TempAzure - 2/12/2014 10:58:23 PM with Subscription ID 'e94e9aeb-7003-4eae-be92-7b7ac0a1ba2c' using Service Management URL 'https://management.core.windows.net/'...

11:00:39 PM - Connecting...

11:00:39 PM - Verifying storage account 'jasontest'...

11:00:41 PM - Uploading Package...

11:06:48 PM - Warning: The remote server returned an error: (500) Internal Server Error.

11:11:50 PM - Warning: The remote server returned an error: (500) Internal Server Error.

11:26:16 PM - Warning: The remote server returned an error: (500) Internal Server Error.

12:00:27 AM - Warning: The remote server returned an error: (500) Internal Server Error.

12:05:05 AM - Warning: The remote server returned an error: (500) Internal Server Error.

12:27:54 AM - Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host.

实际上问题出在我的网络连接上。

为了识别这个问题,我在 azure 上创建了具有相同 windows 8.1 OS 和相同 VS 的 VM。我试图从那里部署。部署工作正常。后者我断开了所有其他设备与互联网连接的连接,并尝试从我的机​​器上发布。成功了!

所以结论是互联网连接速度慢,或者现在我们从 VS 发布的超时时间更短了!

从 Azure SDK2.5 更新到 SDK 2.6 后,我在尝试从 VS2013 发布到我的 Azure 服务时遇到了同样的问题:几分钟后使用 Visual Studio 的任何部署工作都失败了500 内部服务器错误。

我发现原因是 将 Azure 包上传到云的速度非常慢 - 有时仅在 30kB/s 和 50kB/s 之间。部署因超时而失败,这也说明了 Azure 实例日志没有显示任何部署迹象...

解决方法:从 Azure 存储部署

1:通过 VisualStudio 或命令行打包 Azure 解决方案:

MSBuild /t:Publish /p:TargetProfile=Cloud /P:Configuration=Release

2: 创建一个 Azure 存储容器来上传你的包。

继续使用 AzurePowerShell cmdlet:

3:登录

Add-AzureAccount

4:将包上传到您的 Azure 存储容器

$Ctx = New-AzureStorageContext -StorageAccountName "yourstoragename" -StorageAccountKey "yourkey"

Set-AzureStorageBlobContent -File "...\app.publish\yourservice.cspkg" -Container "yourazurestoragecontainer" -Blob "yourservice.cspkg" -Context $Ctx -Force

确定上传包的PackageURL。

5:部署云服务,指的是刚刚上传到Azure云存储的包。

Set-AzureDeployment -Upgrade -Slot "Staging" -Package "PackageURL" -Configuration "PathToYourCloudConfiguration.cscfg" -label "SomeDeploymentInfo" -ServiceName "yourservicename" -Force

(当然,整个过程是可编写脚本的。Kemp Brown 写了一篇很棒的文章:使用脚本,您可以适应以显式上传包: Continuous Delivery for Cloud Services in Azure)