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

エミュレータ v4+の場合、パスは次のとおりです。%ProgramFiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe.config

ただし、接続文字列で使用できなくなるため、注意UseDevelopmentStorage=trueしてください (たとえば、Azure Storage Explorer に接続します)。

接続するには、定義した新しいエンドポイント ポートを対象とするカスタム接続文字列を使用します。標準のよく知られたストレージ エミュレーターのアカウント名とキーを使用して接続する必要があります。接続文字列の例は、ここにあります。

于 2012-01-04T18:00:39.497 に答える
1

私は同じ問題を抱えていましたが、私の場合、問題は別の場所にありました。ポート 10,000 でリッスンしているプロセスSystem (PID 4)があったため、そのようなプロセスを強制終了できなかったことは明らかです。唯一の回避策は、Windows (Windows 7 64 ビット) を再起動することでしたが、これは極端すぎて時間がかかります。

最も困難な部分は、システムプロセスがそのポートでリッスンしている理由を特定することでした。この場合、Google はまったく役に立ちませんでした。

そこで、 Netcat (より良い Telnet)を使用してlocalhostのポート 10,000 に接続し、そこに何かを送信しようとしました:

$ nc 127.0.0.1 10000

応答から、ポート 10,000 でリッスンしている HTTP サーバーがあることにすぐに気付きました。応答で最も重要な情報は、次のヘッダーでした。

Server: Microsoft-HTTPAPI/2.0

その後、このポートを Azure Emulator 用に解放するのは非常に高速でした。簡単なグーグル検索により、このことが実際に をしているのかについての詳細が明らかになりました: HTTP Server API、そして最も重要なのは、それがをしているのか: Windows HTTP Servicesです。

次に、Services Management Consoleに移動し、実行中のService WinHTTP WPADというサービスを見つけ、単純に停止しました。そしてほら、ポート10,000は鳥のように自由になりました。


誰がそれがどのように機能するか知っていますか? いくつかの 3 番目のアプリケーションが、 WinHTTP WPADサービスを使用して、ポート 10,000 でリッスンする HTTP サーバーを作成していると思います。Microsoft が既に使用しているポートを使用するように Azure Emulator を構成しないため、Microsoft からのものであるとは思えません。

于 2015-09-01T17:38:42.347 に答える
0

私の場合、システムにビット Torrent はありませんでした。ただし、ポート 1000 は一部の java.exe によって使用されていました。HDInsight をローカルで実行しても、Azure Blob Storage では機能しないことがわかりました。そこで、Azure Storage Emulator UI に移動し、BLOB のチェックを外しました。その後、この問題は解決しました。

于 2013-11-01T18:13:02.123 に答える