我一直在尝试通过计算机的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
仅此消息将引发type异常:
远程服务器返回错误:(500)Internal Server Error。
我尝试过:
确保我的WindowsAzure.Storage nuget软件包是最新版本(6.2.0)。
重新安装适用于VS2015 2.8.1的Azure SDK(并确保它是最新版本)
通过Azure存储模拟器命令行工具停止,清除,初始化Azure存储模拟器(似乎工作正常,没有错误)
通过异常的“ .InnerException.Response.GetResponseStream()”读取Web响应的流。此操作失败,并指出“流不可读”。
重新启动我的机器(无奈中)
我的花样少了。有人遇到过这个问题吗?
我解决了 我必须彻底清除现有的本地存储仿真实例。使用“ AzureStorageEmulator.exe清除”或“ AzureStorageEmulator.exe初始化”是不够的。即使卸载Azure SDK也不够。
我从停止存储仿真开始:
AzureStorageEmulator.exe stop AzureStorageEmulator.exe clear AzureStorageEmulator.exe init /forceCreate
最后一条命令出错,并指示它无法创建数据库。
然后,我删除了(实际上,我重命名了)剩下的文件,这些文件构成了Azure存储模拟器背后的数据库:
C:\ Users \ [Me] \ AzureStorageEmulatorDb42_log.ldf
C:\ Users \ [Me] \ AzureStorageEmulatorDb42_log.mdf
最后,我开始备份模拟器
AzureStorageEmulator.exe init /forceCreate AzureStorageEmulator.exe start
成功!
我不确定是什么使我陷入困境,但我最大的猜测是这是由于Azure SDK的最新升级引起的。