この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 20667|答える: 0

[ASP.NET] GETリクエスト「HTTPエラー400。 リクエストURLは無効です」

[リンクをコピー]
掲載地 2018/07/04 9:53:58 | | | |


このような誤情報を見て、平均的な開発者は2つの理由を推測するかもしれません

1. リンクには特殊文字があります

2. リンク長が長すぎる(長さが原因ではないようです。曖昧で、忘れていました)

エラー画像のアドレスは以下の通りです:http://{host}/SearchService。 svc/rest/pic600x320/png/kv3hcxmnCmISVvFKojNBGpkN44MRx71vV4v7Qu7ikclbic2vX5Axnm8RxwhLoWyehsSz4J%C2% A72F6h4eQgvkrbzuKGR6y7sszK1KUY75RqxylZMumapwVQttfllaSPXwoRGEeVexDqjmMZSERPquL3uLZbv6Vxdx52nRDUW90SVVYeqkHZbx2w3T1coqt2v036tfaZ%C2%A72D8GBlPbIVJuhSFU5GA8116z8FkV4%C2% A72kDtsxSXy9XTFIziTToRpbQEkp7497O6q99

次に、私たちが遭遇しうるエラーの原因を調査し始めました

1. URLを確認してください。特殊文字は含まれていません(この理由は除きます)

2. URLが一見すると非常に長く見えるので、パラメータの長さの半分を削除してリクエストします。 その結果、成功し、文字を継続的に追加することで長さが339を超え、このエラーが報告され、339以降の特殊文字は存在しないため、エラーの原因はURLが長すぎることにあると結論づけました

次のステップは関連する問題を解決することです

次に様々な百度があり、クエリ文字列の長さ制限の変更に関する設定を確認してください

次にweb.configを修正します

1. httpRuntimeノード下のmaxQueryStringLengthおよびmaxRequestLength構成を変更する

2. system.webServerノードを次のように修正します

セーブして実行してもエラーは同じで、どうやら無駄のようです

この時点で、なぜ効果が出ないのか、なぜ効果がないのかと考え始めました。私のような人がたくさんいるかもしれないと考え、IISのグローバル設定を考えると、この設定は上書きされないのでしょうか?私たちは依然としてすべてのセット値を使っています

推測せず、ただ確認してみてください(チェックするrequestFilteringはsystem.webServerの上にあるので、間違ったノードを見ないでください)。

オフの場合、overrideModeDefaultの値は「Deny」となり、私たちの設定はサイトの特定の設定に基づいています。

それならすべて正常なのに、なぜエラーなんだ?!

最後に、スタックオーバーフローで採用されていないリバートが目に留まりました

リンクhttps://stackoverflow.com/questi ... is-invalid-in-iis-7



大まかに言えば、リクエストはまだIISに届いておらず、オペレーティングシステムによって停止されます。

この時、私はGoogleで別の記事を検索し、Microsoftの光ラジオ技術サポートへのリンクを探しました

住所は以下の通りですhttps://support.microsoft.com/zh ... ettings-for-windows

2つの記事の要点は、レジストリを修正する必要があるということであり、おそらく以下の2つのレジストリ値によって修正されているということです



次に試してみて、レジストリCMD="regedit="HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parametersにアクセスしてください

空欄を右クリックして、写真のようにDwordの値を選択します



UrlSegmentMaxLengthという新しい名前を作成し、値を2048に設定し、OKをクリックします



UrlSegmentMaxCountの設定は上記と同じで、値もDword 2048なのでOKをクリックしてください。

この変更はHTTPサービスが再起動された場合にのみ有効となります

  • 「スタート」をクリックし、「Cmd」と入力し、「OK」をクリックします。
  • コマンドプロンプトで net stop http と入力し、Enterキーを押します。
  • コマンドプロンプトで「net start http」と入力し、Enterキーを押します。


その後、IISを再起動します。 もう一度試してみました。エラーなし、完璧な解決策です





先の:「Object」型は参照されていないアセンブリで定義されています。 プログラムに返答を追加しなければなりません...
次に:Ionic Development Android App Practice (4): BaiduマップAPIポジショニング
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com