web-dev-qa-db-ja.com

任意の長さの要求を許可するようにweb.configを構成する方法

Textarea要素の値からファイルクライアント側を作成したいサイトを構築しています。

これを行うためのコードが用意されていますが、このエラーが発生しています

HTTPエラー404.15-見つかりません要求フィルタリングモジュールは、クエリ文字列が長すぎる要求を拒否するように構成されています。

任意のサイズのリクエストを処理できるように、これをオーバーライドする方法はありますか?

そうでない場合、filesystem/active xオブジェクトを使用せずにクライアント側でファイルを生成する方法はありますか?

ありがとう

124

Web.configに次を追加します。

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxQueryString="32768"/>
    </requestFiltering>
  </security>
</system.webServer>

見る:

http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits

コメントを反映するために更新されました。

requestFiltering [IIS Settings Schema]のrequestLimits要素

Web.configにも以下を追加する必要があります。

<system.web>
    <httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
</system.web>

参照: httpRuntime要素(ASP.NET設定スキーマ)

もちろん、上記の構成設定の数値(32768および65536)は単なる例です。これらの正確な値を使用する必要はありません。

224
Matt Varblow

私の場合(Visual Studio 2012/IIS Express/ASP.NET MVC 4 app/.Net Framework 4.5)、試行錯誤の30分後に実際に機能したのは、<httpRuntime>タグのmaxQueryStringLengthプロパティの設定でした。

<httpRuntime targetFramework="4.5" maxQueryStringLength="10240" enable="true" />

maxQueryStringLengthのデフォルトは2048です。

詳細はこちら:

許可されるURLの範囲の拡大


@ MattVarblow が示唆するように<system.webServer>で設定しようとしましたが、うまくいきませんでした...これは、IIS Express(IIS 8)Windows 8を搭載した開発マシン。

アプリを実稼働環境(IIS 7を使用するWindows Server 2008 R2)にデプロイすると、IE 10は長いクエリ文字列を含むAJAXリクエストで404エラーを返し始めました。 。次に、問題がクエリ文字列に関連していると思い、@ MattVarblowの答えを試しました。 IIS 7で機能しました。:)

29

確認すべきこと:サイトでMVCを使用している場合、ログインコントローラークラスに[Authorize]を追加すると、これが発生する可能性があります。ログインメソッドにアクセスできないため、ログインメソッドにリダイレクトされます-> boom。

6
SteveCav

ASP WebアプリケーションをIIS 8.にデプロイしようとすると、同様の問題が発生しました。それを修正するために、MattとLenielが上で提案したようにしました。しかし、匿名認証を有効にするには、サイトの認証設定も構成する必要がありました。そしてそれは私のために働いた。

0

ユーザーがまだ認証されていないため、ログインページのActionResult関数に[AllowAnonymous]を追加する必要がありました。

0
Andrew Gale

IIS 8.5 Webサーバーを実行しているときにこの問題に遭遇した場合、次の方法を使用できます。

まず、作業中のIISサイトで "Request Filtering"モジュールを見つけて、ダブルクリックします...

enter image description here

次に、以下に示す白い領域を右クリックして、「機能設定の編集」というコンテキストメニューオプションをクリックする必要があります。

enter image description here

最後に行うことは、 "Maximum query string(Bytes)"の値を2048必要に応じて5000などのより適切なものに変更します。

enter image description here

0
Arvo Bowen

Webサイトが認証を使用しているが、IISに正しい認証方法が設定されていない場合(たとえば、Basic、Formsなど)、ブラウザはリダイレクトループでスタックします。これにより、リダイレクトURLは爆発するまでますます長くなります。

0
Steve Smith