Azure Web Appでレイガンエラーが発生し、困惑しています。
d:\local\Temporary ASP.NET Files\root\8c572dab\d52156ac\
App_Web_636035960914530576dbc451921d-d5ba-4ab9-ae23-
3aebe17a2fcd.cshtml.ae8ccf29.453z6dsh.0.cs(151):
error CS1528: Expected ; or = (cannot specify constructor arguments in declaration)
エラー自体は理にかなっています-構文エラーがあるのは生成されたかみそりファイルです。私を困惑させるのは、生成されたファイルのlocationです。
このwebappは単一のインスタンスを実行しています。アプリをクドゥに行ってブラウジングしても、そのパスが見つかりません。代わりに、私は見ます:
D:\local\Temporary ASP.NET Files\root>ls
6260ae3c
Azureには欠けている基本的なものはありますか?このWebアプリが複数のインスタンスにスケールアウトできた場合、kuduで間違ったインスタンスにアクセスしていた可能性があることを理解しています。ただし、インスタンスが1つしかないため、実際には取得できません。
Azure Web Appsの一時ファイルの場所は常にD:\ local\Tempのようです。ただし、D:\ localフォルダー全体は、AzureによってWebアプリごとに異なる場所にマウントされます。
これは、各Webアプリが異なるD:\ localを参照することを意味します。これはおそらくそれほど驚くべきことではありません。ただし、実際のトリックは、KUDU自体が独立したプロセスとして実行され、独自のプライベートD:\ localを取得することです。つまり、実際にはKUDUのプライベートD:\ localを参照しており、アプリケーションのそれは参照していません。
誰かがこれがデバッグシナリオの問題になる可能性があることを理解している必要があるため、これを回避する方法があります。アプリケーションに名前「WEBSITE_DISABLE_SCM_SEPARATION」と値「true」のアプリ設定を追加しますAzureポータルから。
アプリケーションが再起動した後、KUDUを使用すると、アプリケーションと同じD:\ local(一時ファイルを含む)を表示できるはずです。
何らかの理由でデフォルトの分離が存在する可能性があるため、完了したらこの設定をオフにする必要があります。
WEBSITE_DISABLE_SCM_SEPARATION
への(公式の)ソースとさらに詳しい説明を見つけました(サポートされていません!) Ole Tolshaveの answer で言及されているフラグ。
Kudu wikiページ: Azure App Serviceファイルシステムについて
もう1つの重要な注意事項は、メインサイトとscmサイトが一時ファイルを共有しないことです。そのため、サイトからファイルをそこに書き込んだ場合、それらはKudu Consoleからは表示されません(逆も同様です)。分離を無効にすると(WEBSITE_DISABLE_SCM_SEPARATIONを介して)、それらに同じ一時スペースを使用させることができます。 ただし、これはレガシーフラグであり、その使用は推奨/サポートされていないことに注意してください。