Azure存储模拟器错误,无法启动

Big*_*ief 50 azure azure-table-storage

这个错误真的让我抓狂.(终端以管理员模式运行)

在sql server 2014中初始化azure存储模拟器:

C:\Program Files (x86)\Microsoft SDKs\Windows Azure\Storage Emulator>.\wastorage
emulator init -server MY-PC
Windows Azure Storage Emulator 3.0.0.0 command line tool
The storage emulator was successfully initialized and is ready to use.
Run Code Online (Sandbox Code Playgroud)

启动服务器时出错:

C:\Program Files (x86)\Microsoft SDKs\Windows Azure\Storage Emulator>.\wastorage
emulator start
Windows Azure Storage Emulator 3.0.0.0 command line tool

Unhandled Exception: System.TimeoutException: Unable to open wait handle.
   at Microsoft.WindowsAzure.Storage.Emulator.Controller.EmulatorProcessControll
er.InternalWaitForStorageEmulator(Int32 timeoutInMilliseconds)
   at Microsoft.WindowsAzure.Storage.Emulator.Controller.EmulatorProcessControll
er.EnsureRunning(Int32 timeoutInMilliseconds)
   at Microsoft.WindowsAzure.Storage.Emulator.StartCommand.RunCommand()
   at Microsoft.WindowsAzure.Storage.Emulator.Program.Main(String[] args)
Run Code Online (Sandbox Code Playgroud)

Dav*_*uez 133

使用端口10000检查您是否正在运行BitTorrent/uTorrent或类似软件.

查看史蒂夫马克思关于这个问题的博文.http://blog.smarx.com/posts/windows-azure-storage-emulator-the-process-cannot-access-the-file-because-it-is-being-used-by-another-process

如果帖子消失,检查是否有其他软件正在使用该端口的命令是:

C:\Users\smarx>netstat -p tcp -ano | findstr :10000
  TCP    127.0.0.1:10000        0.0.0.0:0              LISTENING       3672
Run Code Online (Sandbox Code Playgroud)

  • 我想知道微软开发者如何构建他们的应用程序.而不是不明确的TimeoutException,应用程序不能抛出"Port Unavailable"异常吗?!!! (19认同)
  • 你刚给我们节省了很多时间 (13认同)

小智 22

问题可能是10000端口被占用。存储模拟器在端口 10000 上运行。因此您需要终止该进程。在 Windows 上,以管理员身份打开 cmd 并运行以下命令。

首先找到占用10000端口的进程

netstat -ano | findstr :10000
Run Code Online (Sandbox Code Playgroud)

杀死进程

taskkill /PID <process id> /F
Run Code Online (Sandbox Code Playgroud)

现在尝试再次启动模拟器。


小智 16

我在Azure工具更新(2.3版本)后遇到同样的问题.经过数小时的研究,我发现了一个奇怪的解决方案 - 将"启动Windows Azure存储模拟器"设置为"False"(在Azure项目的属性中).

  • 这是否意味着存储模拟器正在运行,即使您之前没有使用过(例如在计算机重新启动后)?如果是,那么我可能遇到了同样的问题。我花了很长时间才找到它。只是**“系统”进程(PID 4)正在侦听端口 10,000**,因此无法找到实际导致它的进程。但是后来我发现 Storage Emulator 已经在运行(只是一个没有任何 UI 的进程),所以我终止了它,然后我能够从 Visual Studio 启动 Azure 项目,它启动了 Storage Emulator。似乎它总是在计算机重新启动后运行。 (3认同)

Ram*_*tap 14

总结并在此问题的其他答案中添加其他要点.

在记事本或记事本++编辑器中打开C:\ Program Files(x86)\ Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe文件.看看服务部分.

<services>
  <service name="Blob" url="http://127.0.0.1:10000/"/>
  <service name="Queue" url="http://127.0.0.1:10001/"/>
  <service name="Table" url="http://127.0.0.1:10002/"/>
</services>
Run Code Online (Sandbox Code Playgroud)

尝试在Web浏览器中打开"Blob"的URL.就我而言

http://127.0.0.1:10000/
Run Code Online (Sandbox Code Playgroud)

如果您无法打开URL或出现错误,则这就是您无法启动Azure存储模拟器的原因.

请尝试以下步骤来解决此问题.

1)检查端口10000是忙还是由任何其他进程使用.

要知道这一点,您可以在命令提示符下键入以下命令

netstat -na | find "10000"
Run Code Online (Sandbox Code Playgroud)

杀死这个过程.

现在以-inprocess模式启动Azure存储模拟器

在Azure存储模拟器的命令提示符下键入

AzureStorageEmulator.exe start -inprocess

按Ctrl + c然后

AzureStorageEmulator.exe start

如果这没有解决问题,请尝试第二步.

2)运行它

netsh http add iplisten 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

然后在Azure存储模拟器的命令提示符下输入

AzureStorageEmulator.exe start -inprocess
Run Code Online (Sandbox Code Playgroud)

按Ctrl + c然后

AzureStorageEmulator.exe start
Run Code Online (Sandbox Code Playgroud)

  • 这个终于对我有用了(第2步)。这到底是做什么的:`netsh http add iplisten 127.0.0.1` (2认同)

Mic*_*SFT 9

确保初始化模拟器的用户与启动模拟器的用户相同.请注意,如果您作为其他用户提升以运行初始化,则初始化仅适用于该用户.

如果这没有帮助,您可以尝试使用-inprocess标志启动模拟器以获取更详细的错误消息:

WAStorageEmulator start -inprocess
Run Code Online (Sandbox Code Playgroud)


Gee*_*eek 8

以管理员身份运行Microsoft Azure命令提示符,并尝试首先使用AzureStorageEmulator.exe init初始化,然后开始使用AzureStorageEmulator.exe启动命令.它适用于我的情况.


小智 8

在文件C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe.config 中, 您需要更改端口号:

所需更改的屏幕截图


Cra*_*nie 5

另一种选择是更改模拟器在位于存储模拟器目录中的配置文件中使用的 ip 绑定。

找到 wastorageemulator.exe.config 并更改

<services>
      <service name="Blob" url="http://127.0.0.1:10000/"/>
      <service name="Queue" url="http://127.0.0.1:10001/"/>
      <service name="Table" url="http://127.0.0.1:10002/"/>
   </services>
Run Code Online (Sandbox Code Playgroud)

如果另一个应用程序已经在使用该端口并且您无法卸载,这将非常有用。


Don*_*Bar 5

还可以尝试使用以下命令运行命令提示符:"以管理员身份运行",然后运行命令: C:\ Program Files(x86)\ Microsoft SDKs\Azure\Storage Emulator> AzureStorageEmulator.exe启动

这对我有用!


小智 5

我遇到了同样的问题,因为我不得不将机器重新加入域,并且重新创建了用户配置文件。我注意到它从选项-inprocess开始,从提升的cmd开始。然后我意识到这与urlac有关,我解决了使用以下命令删除旧版本的问题:

(from elevated cmd)
netsh http delete urlacl url=http://127.0.0.1:10000/
netsh http delete urlacl url=http://127.0.0.1:10001/
netsh http delete urlacl url=http://127.0.0.1:10002/
Run Code Online (Sandbox Code Playgroud)

之后,像往常一样简单地启动,该工具将重新创建必要的内容。现在,我可以不加高地使用它。