アップロードに許可される最大ファイルサイズを変更しているときに、これら2つの設定に遭遇しました。
sytem.webには、maxRequestLengthを持つhttpランタイムノードがあります。system.webServerには、maxAllowedContentLengthを持つrequestLimitsがあります。
今、どちらが他よりも優先されますか?そして、両方を設定する必要がありますか、それとも最後のもの(IIS7用のもの)で十分ですか?
アップロードに許可される最大ファイルサイズを変更しているときに、これら2つの設定に遭遇しました。
sytem.webには、maxRequestLengthを持つhttpランタイムノードがあります。system.webServerには、maxAllowedContentLengthを持つrequestLimitsがあります。
今、どちらが他よりも優先されますか?そして、両方を設定する必要がありますか、それとも最後のもの(IIS7用のもの)で十分ですか?
maxRequestLengthは、ASP.NETでサポートされているリクエストの最大サイズを示しますが、maxAllowedContentLengthは、IISでサポートされているリクエストのコンテンツの最大長を指定します。したがって、大きなファイルをアップロードするには、両方を設定する必要があります。小さなファイルが「優先」されます。
(私はこれをhttp://forums.iis.net/t/1169846.aspxから取得しました-期限が来ているクレジットです。)
適切なweb.configファイルを編集することにより、特定のサイトまたはサイト内のフォルダーの両方をローカルに設定できます。ファイル(リクエスト)の長さがmaxAllowedContentLength未満で、maxRequestLengthを超える場合、標準(ASPX)エラーページがあれば、ユーザーに表示されます。逆の場合は、代わりにIISエラーページが表示されます。そのため、maxAllowedContentLengthを非常に大きな値(このWebサイト/フォルダーの場合のみ)にしてから、制限値をmaxRequestLengthにすることができます。
最後に、maxRequestLengthはKB単位であるのに対し、maxAllowedContentLengthはBYTES単位であることに注意してください。
短くて甘い答えは、2つのうち小さい方が優先されるということです。ただし、アドバイスの言葉-私の意見では、Global.asaxのApplication_Errorイベントで例外をキャッチできるため、maxRequestLengthを2つのうち小さい方に設定することをお勧めします。maxAllowedContentLengthを超えると、最初にIISがASP.NETではなくASP.NETを処理するため、コードでの処理が難しくなります。