web-dev-qa-db-ja.com

msdeployを介したAzureWebアプリのデプロイエラー-ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER

私はmsdeployを使用して約4か月間AzureWebアプリにデプロイしており、Webサイトをアップロードするためにすべてが順調に進んでいます。最近まで、展開にエラーはありませんでした。 Webサイトアプリケーションを公開すると、「ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER」エラーが表示されるようになりました。

Webサイトを正常に更新する唯一の方法は、AzureでWebアプリを停止してから、VisualStudioを介してWebアプリケーションの公開を実行することです。ただし、ユーザーが現在システムを使用している場合、これは問題になる可能性があります。ウェブサイトの更新中にダウンタイムが発生することは本当にありません。

完全なエラーは次のとおりです。

msdeployエラーERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER:Webデプロイメントタスクが失敗しました。 (指定されたディレクトリ( "D:\ home\site\wwwroot\bin\Domain.DbFactory.dll")に対して操作( "ファイルの作成")を実行できません。)これは、サーバー管理者がこの操作を許可していない場合に発生する可能性があります。使用しているユーザー資格情報。詳細については、 http://go.Microsoft.com/fwlink/?LinkId=221672#ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER を参照してください。

これらの権限を承認するにはどうすればよいですか?

また、Azureで公開プロファイルをリセットし、新しいプロファイルをダウンロードして再試行しました。しかし、それでは運がありません。

18

エラーは少し欺くものです。これはおそらく許可とは関係ありませんが、代わりにファイルが使用されていることが原因です。

それは常にGehs.DbFactory.dllで発生しますか、それとも他のファイルで発生することもありますか?また、Gehs.DbFactory.dllは通常のマネージドアセンブリですか、それともネイティブ/混合アセンブリですか?

通常、すべてのアセンブリはシャドウコピーされるため、binフォルダーにロックされません。ネイティブの場合、ロードされる可能性があります。

その場合は、Azure固有ではなく、どこにでも同じ問題が発生する可能性があることに注意してください。例えばローカルで実行しているときに、このファイルをbinフォルダーから削除してみてください。

いずれにせよ、新しいバージョンを公開する場合は、ファイルが所定の位置にロックされていないことを確認する必要があります。

これを行う方法が見つからない場合は、ダウンタイムなしで公開できるようにするテクニックを次に示します。

  • Kudu Console を使用して、d:\home\site\wwwroot\binフォルダーに移動します
  • 問題のあるDLLの名前を変更します。例: to Gehs.DbFactory.dll.old(名前は削除できなくても通常は機能します)
  • あなたの出版をしなさい
23
David Ebbo

プロジェクトの[コンテンツ]の下に新しいフォルダーを追加してから公開しようとしたときにも、同じことが起こりました。 Azureでアプリを再起動したところ、正常に機能しました。

2
Dan

正常に動作していて突然壊れたデプロイメントでエラー(Unable to perform the operation ("Delete Directory") for the specified directory ("2_0_50727")が発生しました。

注意を払っていない場合、「2_0_50727」は単なる乱数のように見えます。

ファイルが含まれていなかったのはaspnet_client\system_web\2_0_50727フォルダでした。

このフォルダーのタイムスタンプ(およびこのタイムスタンプを持つすべてのWebアプリケーションにあったという事実)に基づいて、IISインストールされている機能に変更を加えたときに、Add / Remove Featuresによって作成されたはずです。したがって、で実行されるアクセス許可はすべて、このフォルダーが作成されたものです。

削除するとすぐに、再びデプロイできるようになりました。

1
Simon_Weaver