在Azure存储模拟器中创建表会产生HTTP 500错误

时间:2016-01-07 18:10:40

标签: c# azure azure-storage-emulator

我一直在尝试通过我的计算机的Azure存储模拟器创建一个表。我可以使用一个只使用WindowsAzure.Storage nuget版本6.2.0的非常简单的程序重新创建问题:

using Microsoft.WindowsAzure.Storage;

namespace StorageEmulatorTest
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var cloudStorageAccount = CloudStorageAccount.Parse("UseDevelopmentStorage=true");
            var cloudTableClient = cloudStorageAccount.CreateCloudTableClient();
            cloudTableClient.GetTableReference("JohnnyTest").CreateIfNotExists();
        }
    }
}

25秒后,这将抛出Microsoft.WindowsAzure.Storage.StorageException类型的异常,只显示以下消息:

  

远程服务器返回错误:(500)内部服务器错误。

我试过了:

  1. 确保我的WindowsAzure.Storage nuget包是最新版本(6.2.0)。
  2. 重新安装Azure SDK for VS2015 2.8.1(并确保它是最新版本)
  3. 通过Azure存储模拟器命令行工具停止,清除,启动Azure存储模拟器(似乎工作正常,没有错误)
  4. 通过异常" .InnerException.Response.GetResponseStream()"阅读网络响应的流。这失败了,因为状态" Stream不可读"。
  5. 重启我的机器(开始绝望)
  6. 我的技巧包很低。有没有人遇到过这个问题?

1 个答案:

答案 0 :(得分:4)

我解决了。我不得不彻底清除现有的本地存储仿真实例。使用“AzureStorageEmulator.exe clear”或“AzureStorageEmulator.exe init”是不够的。即使卸载Azure SDK也不够。

我开始停止存储模拟:

AzureStorageEmulator.exe stop
AzureStorageEmulator.exe clear
AzureStorageEmulator.exe init /forceCreate

最后一个命令出错并表示它无法创建数据库。

然后我删除了(实际上,我重命名了)这些包含azure存储模拟器后面的数据库的剩余文件:

  • C:\ Users \ [用户本人] \ AzureStorageEmulatorDb42_log.ldf
  • C:\ Users \ [用户本人] \ AzureStorageEmulatorDb42_log.mdf

最后,我启动了模拟器备份

AzureStorageEmulator.exe init /forceCreate
AzureStorageEmulator.exe start

成功!

我不确定是什么让我陷入困境,但我最好的猜测是,这是由最近升级的Azure SDK引起的。