2016-01-07 91 views
2

我一直在尝试通过我的计算机的Azure存储模拟器创建表格。我可以只使用WindowsAzure.Storage的NuGet版本6.2.0一个非常简单的程序重现问题:在Azure存储模拟器中创建表格会产生HTTP 500错误

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类型的异常,只有这条消息:

The remote server returned an error: (500) Internal Server Error.

我曾尝试:

  1. 确保我WindowsAzure.Storage NuGet包是最新的版本(6.2.0)。
  2. 重新安装在Azure SDK的VS2015 2.8.1(并确保它是最新版本)
  3. 停车,结算,通过Azure存储模拟器的命令行工具INITING的Azure存储模拟器(似乎做工精细,无错误)
  4. 通过异常的“.InnerException.Response.GetResponseStream()”读取Web响应的流。这会失败,并显示“流不可读”的异常。
  5. 重新启动我的机器(绝望踢)

我的锦囊已所剩无几。有没有人遇到过这个问题?

+0

请用'UseDevelopmentStorage = true; DevelopmentStorageProxyUri = http://127.0.0.1;'试试。 –

+0

感谢您的想法。但是,它没有改变行为。 –

回答

2

我解决了它。我不得不彻底清除现有的本地存储模拟实例。使用“AzureStorageEmulator.exe清除”或“AzureStorageEmulator.exe初始化”不足。即使卸载Azure SDK也不足。

我开始停止存储仿真:

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

最后一个命令出错,并表示它不能创建数据库。

然后我删除(实际上,我改名它们),其包含在天青存储模拟器后面的数据库中的这些剩余的文件:

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

最后,我开始模拟器备份

AzureStorageEmulator.exe init /forceCreate 
AzureStorageEmulator.exe start 

成功!

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

+0

嗨,我最近遇到了一个问题,其中GET模拟器表存储但POST和PUT不工作。结果底层数据库已满。上面的答案可以解决我的问题,但是我通过启用日志并且写了一篇关于它的博客文章(如果这可以帮助某人)来深入研究:https:// oliviervaillancourt。COM /职位/ Azure的存储在线仿真器,故障排除。谢谢 –

相关问题