当我启动开发存储模拟器时,出现错误
The process cannot access the file because it is being used by another process
我想这只发生在BLOB,其他服务,即Queue和Tables成功启动
可能是什么问题?我使用的是Azure SDK v1.4
答案 0 :(得分:27)
停止BitTorrent。根据我的经验,这个错误通常是端口冲突,而BitTorrent通常会抓取端口10000.如果它不是BitTorrent,请查找可能保留到端口10000的其他应用程序.Netstat可能会有所帮助。
答案 1 :(得分:15)
这可能是使用Azure dev存储使用的端口的另一个进程。
要找出哪个应用,首先运行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使用的端口。解决方案取自this blog post:
您可以通过导航到C:\ Program Files \ Windows Azure来实现 SDK \ v1.4 \ bin \ devstore(用您的SDK版本替换1.4)并打开 的 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
对于模拟器v4 + ,路径为%ProgramFiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe.config
但要小心,因为您将无法在连接字符串中使用UseDevelopmentStorage=true
(例如,使用Azure Storage Explorer连接)。
DsInit
没有帮助要进行连接,请使用定位您定义的新端点端口的自定义连接字符串。您仍然希望使用standard, well-known storage emulator account name and key进行连接。示例连接字符串可以是found here。
答案 2 :(得分:1)
我有同样的问题,但就我而言,问题出在其他地方。有进程系统(PID 4)侦听端口10,000 ,所以很明显我无法杀死此类进程。唯一的解决方法是重启Windows(Windows 7 64位),但这太极端且耗时。
最具挑战性的部分是识别,为什么 System 进程正在侦听该端口。在这种情况下,谷歌根本没有帮助。
所以我只是尝试使用 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仿真器配置为使用它们已经使用过的端口。
答案 3 :(得分:0)
就我而言,我的系统上没有Torrent。但是,某些java.exe正在使用端口1000。我发现在本地运行HDInsight不适用于Azure blob存储。所以我去了Azure Storage Emulater UI并取消选中了blob。之后,这个问题得到了解决。