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

眺める: 20025|答える: 0

[ASP.NET] ASP.NET パラメータパス、長さ制限、使用注意事項。

[リンクをコピー]
掲載地 2018/03/08 10:18:07 | | | |
1. 問題の原因
プロジェクトリリース後のバグ統計の添付ファイル「Post-Release Problems」には以下の通りがあります:   



経験の蓄積として、これらの問題、原因、解決策はチェックリストに含め、次の通りです。
最初の質問:URLパラメータの上限は正確な参照でしょうか? 上限はどれくらいですか?
第二の質問:なぜPOST時にデータ量に制限があるのですか? 上限は128Kですか?  
2. 問題解析
1. 最初の質問:
1) URLにパラメータの上限はありません。 問題は実はIEにはURLの長さ制限があることです。
2) HTTPプロトコル仕様はURLの長さを制限しません。 この制限は特定のブラウザやサーバーによって課される制限です。 IEのURL長制限は2083バイト(2K+35)です。 NetscapeやFireFoxなど他のブラウザでは理論的な長さ制限がなく、その制限はオペレーティングシステムのサポートに依存します。 [参考文献1]
3) 「可変長パラメータはURLを通じて渡される」とは、フォームを送信時にGETメソッドが使われるという意味で、POSTメソッドではありません。 この潜在的なエラーの原因は、フォームデータを送信するためのGETメソッドの使用です。 なぜなら、GETメソッドはURL内のデータをサーバーに渡して処理のために渡すからです。
4) この制限はパラメータ値のデータ長さだけでなく、URL全体の長さであることに注意してください。
5) IEのURL長の制限であるため、GETメソッドとPOSTメソッドの両方にこの制限があります。
(FORMのGETおよびPOST方法の詳細については関連文書[参考文献2])を参照してください)  
おすすめ:
1) アプリケーションが存在する環境、例えばウェブアプリケーションのブラウザやサーバー環境を理解し、その特定のパラメータ制限を理解すること。
2) 複雑なデータを提出するにはできるだけPOSTメソッドを活用すること。 注:FORMがメソッド属性を書き込まない場合、デフォルトではGETメソッドを使用します。
結論(チェックリストに書き込み):
GETメソッドでデータを提出する際は、IE環境でのURL長2083バイトの制限を考慮する必要があります。
2. 第二:
1) 理論上、POSTにはサイズ制限がありません。 HTTPプロトコル仕様にもサイズ制限はありません。
2)「POSTデータのサイズ制限は128K」というのは正確ではなく、POSTデータには制限がなく、サーバーのプロセッサの処理能力が制限的な役割を果たします。
3) ASPプログラムでは、Requestオブジェクトが各フォームフィールドを処理する際のデータ長制限が100Kに制限されています。 しかしRequest.BinaryReadではそのような制限はありません。 10万以上のフォームドメインデータを処理する必要があるソリューションについては、以下の[参考文献3]を参照してください。
4) 拡張として、IIS 6.0ではセキュリティ上の理由から制限を強化しました[参考文献4]。 また、以下の点にも注意を払う必要があります:
   IIS 6.0では、最大200KBのASP POSTデータがデフォルトで、フォームフィールドあたり100KBの制限があります。
    IIS 6.0アップロードファイルのデフォルトサイズは4MBです。
    IIS 6.0では、最大リクエストヘッダーは16KBに設定されています。
    これらの制限はIIS 6.0以前には存在しませんでした。
おすすめ:
1) ランニング環境のデフォルト設定を知っておくことで、問題が起きたときに設計し迅速に解決できます。
2) サーバーバージョンも考慮すべきです。 IISの各バージョンはこれらのパラメータに対して異なるデフォルト設定を持っているため、必要に応じて情報を見つけて比較表を作成してください。 このようにして、開発やテストのための参照が生まれます。
3) これらのIIS 6.0の制限は実際にはデフォルト設定であり、実際のアプリケーション環境で変更可能です。
    WINNT/system32/inetsrv/MetaBase.xmlにおけるデフォルトの定義は以下の通りです:
        AspBufferingLimit="4194304" はアップロードされたファイルの最大サイズに対応しています
        AspMaxRequestEntityAllowed="204800" はPOSTの最大データ量に対応します
        ...
結論(チェックリストに書き込み):
ASPを使用する場合、POSTフォームの一般的な読み取り処理にはフィールドあたり100KBの制限があることを考慮する必要があります。 Request.Binaryを使うかどうかを検討してください。





先の:asp.net mvcはフォーム投稿をHTML送信許可に設定します
次に:System.Linq.Dynamic
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com