19

当我启动开发存储模拟器时,出现错误

The process cannot access the file because it is being used by another process

我猜这仅发生在 BLOB 中,其他服务(即队列和表)成功启动

可能是什么问题呢?我正在使用 Azure SDK v1.4

开发存储模拟器启动错误

4

4 回答 4

27

停止 BitTorrent。根据我的经验,这个错误通常是端口冲突,而 BitTorrent 通常会占用 10000 端口。如果不是 BitTorrent,请寻找其他可能占用 10000 端口的应用程序。Netstat 可能会有所帮助。

于 2011-06-20T19:02:27.047 回答
17

这可能是另一个使用 Azure 开发存储正在使用的端口的进程。

要确定是哪个应用程序,netstat请先运行:

netstat -p tcp -ano | findstr :10000

您将在最后一列中获得一个进程 ID (PID):

  TCP    0.0.0.0:10000          0.0.0.0:0              LISTENING       2204

这意味着侦听此端口的进程是 ID 2204。然后运行taklist

tasklist /fi "pid eq 2204"

所以你会看到这样的东西:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
SMSvcHost.exe                 2204 Services                   0     29 300 K

所以现在您知道它SMSvcHost.exe正在侦听该端口。

如果您无法停止使用端口的进程,有一种方法可以重新映射 DevFabric 使用的端口。解决方案取自这篇博文:

您可以通过导航到 C:\Program Files\Windows Azure SDK\v1.4\bin\devstore(将 1.4 替换为您的 SDK 版本)并打开 DSService.exe.config 来做到这一点。从那里您可以更改配置并使您的服务侦听其他端口。

v1.6中对我来说,路径是C:\Program Files\Windows Azure Emulator\emulator\devstore\DSService.exe.config

对于SDK v2.5 / Storage v3.4,路径为%ProgramFiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\WAStorageEmulator.exe.config

对于Emulator v4+,路径是%ProgramFiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe.config

但要小心,因为您将无法再UseDevelopmentStorage=true在连接字符串中使用(例如,使用 Azure 存储资源管理器连接)。

为了连接,请使用针对您定义的新端点端口的自定义连接字符串。您仍然需要使用标准的、众所周知的存储模拟器帐户名称和密钥进行连接。可以在此处找到示例连接字符串。

于 2012-01-04T18:00:39.497 回答
1

我有同样的问题,但就我而言,问题出在其他地方。有进程System (PID 4) 在端口 10,000 上监听,所以很明显我无法杀死这样的进程。唯一的解决方法是重新启动 Windows(Windows 7 64 位),但这太极端且耗时。

最具挑战性的部分是确定为什么系统进程在该端口上侦听。在这种情况下,谷歌根本没有帮助。

所以我只是尝试使用Netcat (更好的 Telnet)连接到localhost上的端口 10,000并在那里发送一些东西:

$ nc 127.0.0.1 10000

我很快从响应中注意到,有一个 HTTP 服务器正在侦听端口 10,000。响应中最重要的信息是这个标头:

Server: Microsoft-HTTPAPI/2.0

然后为 Azure Emulator 释放这个端口真的很快。简短的谷歌搜索揭示了这个东西实际在做 什么的细节: HTTP Server API,最重要是它在做什么:Windows HTTP Services

然后我去了服务管理控制台,找到了一个名为Service WinHTTP WPAD的服务,它正在运行并简单地停止了它。瞧,10,000 端口现在像鸟一样自由。


有谁知道它是如何工作的?我猜第三个应用程序使用WinHTTP WPAD服务在端口 10,000 上创建了一个监听 HTTP 服务器。我怀疑这是来自微软的任何东西,因为他们不会将 Azure 模拟器配置为使用他们已经使用的端口。

于 2015-09-01T17:38:42.347 回答
0

就我而言,我的系统上没有一点 Torrent。但是,某些 java.exe 正在使用端口 1000。我发现在本地运行 HDInsight 不适用于 Azure blob 存储。所以我去 Azure Storage Emulator UI 并取消选中 blob。之后这个问题得到了解决。

于 2013-11-01T18:13:02.123 回答