【问题标题】:Azure Storage Emulator error and does not startAzure 存储模拟器错误且无法启动
【发布时间】:2014-04-27 01:25:57
【问题描述】:

这个错误真的让我发疯。 (终端以管理员模式运行)

在sql server 2014中初始化azure storage emulator:

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.

启动服务器时出错:

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)

【问题讨论】:

  • 刚刚更新到最新的VS版本+ SDK最终为我解决了这个问题

标签: azure azure-table-storage


【解决方案1】:

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

查看 Steve Marx 的关于该问题的博文。 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

【讨论】:

  • 你为我们节省了很多时间
  • 我想知道微软开发人员是如何构建他们的应用程序的。而不是不清楚的TimeoutException,应用程序不能只是抛出“端口不可用”异常吗?!!!
  • 不带“-p tcp”也值得运行。对我来说,这是 Google Keep。
  • 谢谢,你让我开心。
  • 如果你不喜欢 CLI,点击 WinLogo+R %windir%\system32\perfmon.exe /res(或从任务管理器的性能选项卡打开资源管理器),网络选项卡 -> tcp 连接/监听端口
【解决方案2】:

对此问题的其他答案进行总结和补充。

在记事本或记事本++ 编辑器中打开 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>

尝试在网络浏览器中打开“Blob”的 URL。 在我的情况下是

http://127.0.0.1:10000/

如果您无法打开 URL 或出现错误,这就是您无法启动 Azure Storage Emulator 的原因。

尝试以下步骤来解决问题。

1) 检查端口 10000 是否繁忙或被任何其他进程使用。

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

netstat -na | find "10000"

杀死进程。

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

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

AzureStorageEmulator.exe start -inprocess

Ctrl+c 然后

AzureStorageEmulator.exe start

如果这不能解决问题,请尝试第二步。

2) 运行这个

netsh http add iplisten 127.0.0.1

然后在 Azure Storage Emulator 的命令提示符下键入

AzureStorageEmulator.exe start -inprocess

Ctrl+c 然后

AzureStorageEmulator.exe start

【讨论】:

  • 这方面的巨大帮助 - 其他关于不同问题的高度赞成的答案没有详细说明 netsh 选项
  • 我在尝试本地调试 Azure Function 时遇到了这个问题,并且 (2) 为我工作。非常感谢!
  • 调试时有用的信息,上述解决方案对我有用。非常感谢。
  • 这个终于为我工作了(第2步)。这到底是做什么的:netsh http add iplisten 127.0.0.1
【解决方案3】:

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

【讨论】:

  • 听起来确实是一个奇怪的解决方案。那么存储模拟器没有启动?
  • 莫名其妙地,这对我也有用。项目运行,WA Storage Emulator 已启动。多么奇怪。
  • 这是否意味着存储模拟器正在运行,即使您之前没有使用它(例如在计算机重新启动后)?如果是,那么我可能有同样的问题。我花了很长时间才找到它。只是 “系统”进程 (PID 4) 正在侦听端口 10,000,因此无法找到实际上是什么进程导致了它。但后来我发现 Storage Emulator 已经在运行(只是一个没有任何 UI 的进程),所以我终止了它,然后我能够从 Visual Studio 启动 Azure 项目,它启动了 Storage Emulator。电脑重启后好像一直在运行。
  • 顺便说一句,这并不奇怪。 Just Storage Emulator 只是在系统启动时(可能)执行,或者在某个时间点自动执行,因此当您尝试从 Visual Studio 启动另一个时,它会失败。但只有存储模拟器(TCP 端口 10,000)。 Compute Emulator(端口 10,001 和 10,002)未运行,因此必须从 VS 执行。
  • 如何设置? @AChudov
【解决方案4】:

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

【讨论】:

  • 请将相关代码复制并粘贴到您的答案中,而不是链接到文本截图。
【解决方案5】:

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

【讨论】:

  • 以管理员身份运行也对我有用。这很奇怪,因为在另一台 PC 上,我不需要使用管理员
【解决方案6】:

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

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

WAStorageEmulator start -inprocess

【讨论】:

  • hmzz 也许这可能会导致一些问题,请您帮忙提出解决方案? :2014 年 5 月 3 日下午 4:05:28 [信息] 停止服务:Blob 服务状态:Blob 127.0.0.1:10000 False 该进程无法访问该文件,因为它正被另一个进程使用错误:无法启动存储模拟器。
  • @BigChief 这可能意味着端口正在使用中。运行接受答案中的命令。
【解决方案7】:

我遇到了同样的问题,因为我不得不将我的机器重新加入域并且重新创建了用户配置文件。 我注意到它是从提升的 cmd 中的选项 -inprocess 开始的。 然后我意识到它与 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/

然后像往常一样简单地启动,该工具将重新创建必要的内容。 现在我可以在没有海拔的情况下使用它。

【讨论】:

    【解决方案8】:

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

    这对我有用!

    【讨论】:

      【解决方案9】:

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

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

      netstat -ano | findstr :10000
      

      杀死进程

      taskkill /PID <process id> /F
      

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

      【讨论】:

        【解决方案10】:

        另一个选项是更改模拟器在存储模拟器目录中的配置文件中使用的 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>
        

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

        【讨论】:

        • 但这有一个结果是你不能在ServiceConfiguration.Local.cscfg中使用配置设置Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString设置为UseDevelopmentStorage=true,但是你必须把完整的连接字符串放在那里(这是巨大的和复杂)。而且该配置文件是项目的一部分,因此开发它的每个人都必须重新配置他的 Azure 模拟器。
        【解决方案11】:

        如果您尝试通过 Visual Studio=>Server Explorer 启动“Azure 存储模拟器”,请确保您以管理员身份启动 Visual Studio。 通过在命令提示符下运行“Azure 存储模拟器”,以管理员身份运行命令提示符,我能够解决此问题。

        【讨论】:

          【解决方案12】:
          1. 以管理员身份打开命令提示符
          2. 运行命令:cd C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator
          3. 运行命令:AzureStorageEmulator 启动

          【讨论】:

            【解决方案13】:

            这里有一些信息可能会有所帮助:

            AzureStorageEmulator.exe init –server MyMachine –sqlinstance **.** –forcecreate –inprocess
            

            看到这个link

            【讨论】:

              【解决方案14】:

              我刚刚点击了这个,结果发现 Microsoft Teams 正在使用端口 10000。强制团队退出解决了这个问题。 ?

              【讨论】:

                【解决方案15】:

                对我来说,所需端口上没有运行任何东西,问题是 Visual Studio 没有以 Administrator 模式启动,因此无法启动进程。

                当我从“开始”转到 Azure Storage Emulator CLI 时,它会启动一个也不是管理员模式的命令 shell,这显然会产生相同的结果。

                在管理员模式下打开命令外壳就可以了。

                【讨论】:

                  【解决方案16】:

                  Windows 备份代理在我的 VM 机器上的 10000 端口上运行 - 移动到 10003(通过 .exe.config 文件有效)

                  【讨论】:

                    【解决方案17】:

                    首先你应该初始化模拟器数据库并开始配置 AzureStorageEmulator.exe 以管理员身份使用密钥初始化: AzureStorageEmulator.exe 初始化

                    那么,如果你仍然收到错误:

                    服务状态:Blob http://127.0.0.1:10000/ False 该进程无法访问该文件,因为它正被另一个进程使用 错误:无法启动存储模拟器。

                    尝试将所有服务的 127.0.0.1 更改为 localhost C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe.config

                    【讨论】:

                      【解决方案18】:

                      它对我有用:

                      1. 按 Windows 键并搜索“Azure Storage Emulator”
                      2. 它显示一条错误消息“..无法创建数据库“AzureStorageEmulatorDb510”
                      3. 我打开 SSMS 并查找该数据库,但发现“AzureStorageEmulatorDb59”
                      4. 我将数据库重命名为“AzureStorageEmulatorDb510”
                      5. 再次尝试运行“Azure 存储模拟器”

                      【讨论】:

                        【解决方案19】:

                        我的原因是 Hyper-V。它保留了很多端口。您可以检查保留端口netsh int ip show excludedportrange protocol=tcp。最简单的解决方案 - 在配置文件中更改端口。

                        【讨论】:

                          【解决方案20】:

                          我有同样的问题,我尝试了很多方法,没有任何东西阻塞端口 10000。我尝试将模拟器配置更新为 Localhost 而不是这里的 127.0.0.1

                          <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>
                          

                          但我又遇到了超时问题。

                          最后,我不得不卸载我的 IIS。问题解决了。应该有办法让它们一起工作。

                          【讨论】:

                            【解决方案21】:

                            我最近发生了这种情况,这是因为我最近安装了 HDInsight 模拟器。当 VS 尝试启动它时,这似乎是自动启动存储模拟器导致错误。

                            在这种情况下也可以将“启动 Microsoft Azure 存储模拟器”值设置为 False。

                            【讨论】:

                              【解决方案22】:

                              我遇到了同样的问题。我发现,端口 10000 正在被另一个进程使用。就我而言,utorrent 正在使用它。如果您正在使用它,它可能是 Bittorrent。卸载后,它开始顺利更改我的数据。

                              如果您的 torrent 下载器对您来说意义重大,您可以考虑从这个角度解决您的问题。我希望这行得通。

                              【讨论】:

                                【解决方案23】:

                                对于新发布的 documentdb 模拟器的用户...Microsoft 认为 documentdb 模拟器使用与 Storage 模拟器相同的端口是个好主意;)访问存储的唯一方法是关闭 documentdb 模拟器并重新启动 Visual Studio,瞧,您可以再次使用它:facepalm:

                                【讨论】:

                                  【解决方案24】:

                                  我在尝试运行 Azure Functions 时遇到了与 Visual Studio 类似的问题。 AzureStorageEmulator.exe init 为我工作

                                  【讨论】:

                                    【解决方案25】:

                                    我遇到了停电,重新启动后收到 Unhandled Exception: System.TimeoutException 消息,试图从 Visual Studio 2019 启动和调试 Azure Functions 项目。我在此线程上尝试了许多(如果不是全部)其他建议的答案,但无济于事.包括但不一定限于...

                                    1. 检查使用端口 10000-10002 的进程,(没有)
                                    2. 以管理员身份运行 Visual Studio 和/或 AzureStorageEmulator
                                    3. 删除/重新创建存储数据库
                                    4. 从@Ram Pratap 的回答中尝试了netsh http add iplisten 127.0.0.1
                                    5. 更改了主机名和端口号绑定
                                    6. 试过AzureStorageEmulator initAzureStoreEmulator start -inprocess

                                    最终对我有用的是......

                                    1. 使用standalone installer 安装存储模拟器
                                    2. 这让我可以完全使用添加和删除程序仅卸载存储模拟器,然后重新启动。
                                    3. 接下来我使用standalone installer 重新安装了存储模拟器,然后重新启动。
                                    4. 最后我运行了AzureStorageEmulator start 它成功了!

                                    【讨论】:

                                      猜你喜欢
                                      • 2021-09-12
                                      • 2018-12-28
                                      • 2014-09-09
                                      • 1970-01-01
                                      • 2018-03-27
                                      • 2012-07-09
                                      • 2022-06-14
                                      • 1970-01-01
                                      相关资源
                                      最近更新 更多