私は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で公開プロファイルをリセットし、新しいプロファイルをダウンロードして再試行しました。しかし、それでは運がありません。
エラーは少し欺くものです。これはおそらく許可とは関係ありませんが、代わりにファイルが使用されていることが原因です。
それは常にGehs.DbFactory.dll
で発生しますか、それとも他のファイルで発生することもありますか?また、Gehs.DbFactory.dll
は通常のマネージドアセンブリですか、それともネイティブ/混合アセンブリですか?
通常、すべてのアセンブリはシャドウコピーされるため、bin
フォルダーにロックされません。ネイティブの場合、ロードされる可能性があります。
その場合は、Azure固有ではなく、どこにでも同じ問題が発生する可能性があることに注意してください。例えばローカルで実行しているときに、このファイルをbin
フォルダーから削除してみてください。
いずれにせよ、新しいバージョンを公開する場合は、ファイルが所定の位置にロックされていないことを確認する必要があります。
これを行う方法が見つからない場合は、ダウンタイムなしで公開できるようにするテクニックを次に示します。
d:\home\site\wwwroot\bin
フォルダーに移動しますGehs.DbFactory.dll.old
(名前は削除できなくても通常は機能します)プロジェクトの[コンテンツ]の下に新しいフォルダーを追加してから公開しようとしたときにも、同じことが起こりました。 Azureでアプリを再起動したところ、正常に機能しました。
正常に動作していて突然壊れたデプロイメントでエラー(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
によって作成されたはずです。したがって、で実行されるアクセス許可はすべて、このフォルダーが作成されたものです。
削除するとすぐに、再びデプロイできるようになりました。