起きたこと

Azure WebApps上で動いているアプリケーションのうち、大きいテキストファイルをアップロードする機能があって、それを使おうとしたら

The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

というメッセージのみが白い画面に出てきた。 もちろん期待してない動作なので、アプリケーションのログなどを漁ってみたが、どうやらアプリケーションのエラーではないことがわかった。

調べたこと

調べてみると、この画面になる原因自体はいくつかあるようで、まずそれが何かを特定するために、WebAppsのDiagnostic Logs(診断ログ)のうちApplication Logを有効にしてみた。するとファイルアップロードをしてみたら、Log Stream上にエラーメッセージが流れてきた。

gistf36249cc3816fff8439ef6b40d7fa210

肝心なところだけ抜いてみると。54行目に

Request filtering is configured on the Web server to deny the request because the content length exceeds the configured value.

と出ている。 どうやら、リクエストが大きすぎるらしい。 このエラーメッセージの後の59行目に対応のヒントも書いてあった。

Verify the configuration/system.webServer/security/requestFiltering/requestLimits@maxAllowedContentLength setting in the applicationhost.config or web.config file.

IISの設定で、許容するContent-Lengthのサイズが指定できるということがわかった。

stackoverflow.com

やったこと

ということで、Application のVirtual Pathのトップに web.config ファイルを置いていたので、そこに以下の設定を追加した。

<requestFiltering>
    <requestLimits maxAllowedContentLength="104857600" /> <!-- up to 100 MB -->
</requestFiltering>

上では100MBまでのContent-Lengthのリクエストを受け入れるように設定している。 100MB なので、

1024 * 1024 * 100 = 104857600

としている。たぶん、おおざっぱに 100000000 としても良かったとは思う。

ということで、これでわりと大きめなリクエストも遅れるようになった。