C#にMVC3サイトがあり、JavaScript関数からクエリパラメーターが渡される特定のビューがあり、関数は
window.location.href = "../ActionName?" + query_string;
query_stringは、JavaScript関数によって作成された動的クエリパラメーター文字列です。
この奇妙な理由は、reportviewerコントロールを使用する必要があるため、同じ関数がURLをASP.Net Webフォームに渡すことがあるためです。代替アクションは、この場合、いくつかのパラメーターを保存することですビューに。 (それが意味をなさない場合はさらに詳しく説明できます)
アクションメソッドに[Authorize]を紹介するまで、すべてが正常に機能します。所定の位置にある場合は中断し、なしで正常に機能し、[Authorize]は他のすべての方法で正常に機能します。
この場合のURL全体の長さは966文字です。調査後、デフォルトではmaxQueryStringLength値は2048ですが、整数型の任意の値にオーバーライドできるようです。
<security>
<requestFiltering>
<requestLimits maxQueryString="2048"></requestLimits>
</requestFiltering>
</security>
キーの下のWeb設定ファイルへのキー。
そこには喜びがなかったので、私はばかげて4096にしたが、まだ喜びはなかった。
現在、URL全体が966文字の長さであるため、authorize属性は別の1082〜3130文字を追加することはできません。エラーが実際に何であるか、または設定が有効にならない理由を判断するにはどうすればよいですか?.
VS2010 Pro SP1
承認されていないリクエストが届くと、リクエスト全体がURLエンコードされ、クエリ文字列としてリクエストに承認フォームに追加されるため、状況に応じて問題が発生する場所を確認できます。
MSDNによると、web.configのmaxQueryStringLengthをリセットするために修正する正しい要素は、<httpRuntime>
要素内の<system.web>
要素です。 httpRuntime要素(ASP.NET設定スキーマ) を参照してください。その要素を変更してみてください。
プロジェクトのルートweb.config
のsystem.web
ノードの下:
<system.web>
<httpRuntime maxUrlLength="10999" maxQueryStringLength="2097151" />
...
さらに、system.webServer
ノードの下にこれを追加する必要がありました。そうしないと、長いクエリ文字列のセキュリティエラーが発生しました。
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxUrl="10999" maxQueryString="2097151" />
</requestFiltering>
</security>
...
この問題に遭遇する可能性があり、上記のオプションのいずれでも解決されない他の人にとって、これは私にとってうまくいったことです。
1. Click on the website in IIS
2. Double Click on Authentication under IIS
3. Enable Anonymous Authentication
私たちは独自の認証を使用していたため、これを無効にしましたが、これはこの同じ問題につながり、受け入れられた答えは何の助けにもなりませんでした。
私はdatatables.netを使用してこのエラーがあります
dataTable()のプロパティでデフォルトのajax GetをPOSTに変更する問題を修正しました。
"ajax": {
"url": "../ControllerName/MethodJson",
"type": "POST"
},