当我启动开发存储模拟器时,出现错误
The process cannot access the file because it is being used by another process
我猜这仅发生在 BLOB 中,其他服务(即队列和表)成功启动
可能是什么问题呢?我正在使用 Azure SDK v1.4
当我启动开发存储模拟器时,出现错误
The process cannot access the file because it is being used by another process
我猜这仅发生在 BLOB 中,其他服务(即队列和表)成功启动
可能是什么问题呢?我正在使用 Azure SDK v1.4
停止 BitTorrent。根据我的经验,这个错误通常是端口冲突,而 BitTorrent 通常会占用 10000 端口。如果不是 BitTorrent,请寻找其他可能占用 10000 端口的应用程序。Netstat 可能会有所帮助。
这可能是另一个使用 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 存储资源管理器连接)。
DsInit
没有帮助为了连接,请使用针对您定义的新端点端口的自定义连接字符串。您仍然需要使用标准的、众所周知的存储模拟器帐户名称和密钥进行连接。可以在此处找到示例连接字符串。
我有同样的问题,但就我而言,问题出在其他地方。有进程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 模拟器配置为使用他们已经使用的端口。
就我而言,我的系统上没有一点 Torrent。但是,某些 java.exe 正在使用端口 1000。我发现在本地运行 HDInsight 不适用于 Azure blob 存储。所以我去 Azure Storage Emulator UI 并取消选中 blob。之后这个问题得到了解决。