私は次のコードを経由してC#でSystem.Net.HttpListenerを使用して単純なサーバーを書かれている:URLの最大長(C#の)
Listener = new HttpListener();
Listener.Prefixes.Add(Prefix);
Listener.Start();
Listener.BeginGetContext(GetContextCallback, null);
私は私のサーバーは400を返すことに気づきました(Bad Request)私が(HTTP GETで)送信するURLが〜255文字を超えるたびに、HTTP応答が返されます。私はこれに関するいくつかの調査を行っており、ほとんどのブラウザとサーバーは少なくとも〜2000文字を処理するようですが、標準は存在しないようです。
面白いことに、私のGetContextCallback()はこのように失敗した場合でも呼び出されることはありません。
これは255文字を超える文字をサポートするように設定する方法を本当に知りたいですか?
ありがとうございます!
更新:この制限は、URL全体ではなく個々のディレクトリ名にあるように見えます。私はこれがMAX_PATHと関係があると推測していますが、他のサーバーがこれを処理できるという事実を知っています。そして、実際には300文字以上のディレクトリ名を持つ " like/extern_js/f/........)。
更新:
GET /013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789013456789/test.html
Host: 10.15.38.80:8008
Accept: */*
私はちょうど800を超える文字の文字列で、ブラウザからテストし、それがうまく働きました。 HTTP GETに使用しているコードを投稿できますか? –
私は実際にテストするためにコードを使用していない、私はテルネットを使用しています。元の投稿を更新して、HttpListenerを壊すパス(400の戻りコード)を含むようにしました。 – Locksleyu
あなたはそうです、間違いなくフォルダの制限です。一部のサイトでサポートされているようです(google.comに問題なくURLを投稿できます)が、他のサイトでは無効です(Microsoft.comは無効なURLエラーを返します)。質問になると、本当にフォルダ名に多くの情報が必要ですか? 1つのサブフォルダを追加して半分に分割すれば、それでも機能します。私は、フォルダレベルを小さく保ち、クエリ文字列にデータを置くことをお勧めします。 –