1

URL を介して ASP.Net Web サービスに大きなパケットを送信する必要があります。特定の理由で POST を使用できないため、XML パッケージを URL エンコードし、サービスに対して GET 要求を行います。

http://service.example.com/collect?content=AAAAAAAA...(+5000 characters)

サービスは次のように応答します

エラー 404 - ファイルまたはディレクトリが見つかりません。

max-content-length-exceeded のエラー コードがないことを読んだので、IIS はこの 404 エラーを返します。そのことを知って、次のように構成を変更して、大きなリクエストを許可しました。

変更されたクエリ文字列の長さ、URL の最大長、リクエストの最大長、無効化された検証

<httpRuntime 
    requestValidationMode="2.0" 
    maxQueryStringLength="262144000" 
    maxUrlLength="262144000" 
    maxRequestLength="262144000" />
...
<pages validateRequest="false" />
...
<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="262144000" />
        </requestFiltering>            
    </security>
</system.webServer>

それでも同じエラーが表示されます。非常に大きい/長い URL を使用して Web サービスにリクエストを送信するにはどうすればよいですか?

更新 1

画像はお送りしておりません。内容は次のようなものです。

<packet date="1243235246436">
    <param type="1" id="45">
        5
    </param>
</packet>

改行文字と URL エンコードなし。

更新 2

IIS Request Filtering で制限をより大きな数に設定した後、404 は次のように変換されます。

HTTP エラー 400。要求ヘッダーのサイズが長すぎます。

これは、現在ヘッダーのサイズが大きすぎるためです。MaxFieldLength および MaxRequestBytes レジストリ エントリを追加することにより、この記事の指示に従おうとしましたが、まだ URL の長さが 16k に制限されています。1,000,000 の長い URL を送信できるようにするにはどうすればよいですか? これは可能ですか?少なくとも 65k の長い URL を送信するにはどうすればよいですか? これはヘッダーの最大長ですが、私の設定は考慮されていません。

4

2 に答える 2

2

maxQueryStringLength の MSDN ドキュメントには、非常に長い URL の場合の IIS フィルタリングについても記載されています。これをチェックしましたか?そこに記載されているプロパティ名は少し異なります: maxQueryString, maxUrl.

于 2013-05-25T09:27:15.713 に答える
1

GET 要求は、URL 文字列の長さに関するブラウザーの制限によってのみ制限されます。IE では、実際のパスの文字数を引いた 2,083 文字です。他のブラウザには、URL 文字列の長さについて明確に定義された制限がありません。これらの記事は役に立つかもしれません。

http://www.boutell.com/newfaq/misc/urllength.html

http://support.microsoft.com/kb/q208427

RFC 2616、「Hypertext Transfer Protocol -- HTTP/1.1」では、URL の長さに関する要件が指定されていないため、ブラウザは、適切と思われる長さを自由に規定できます。

于 2013-05-25T11:10:01.233 に答える