3

私のルートは次のようになります:

config.Routes.MapHttpRoute(
     name: "DefaultApi",
     routeTemplate: "api/{controller}/{id}/{uri}",
     defaults: new { id = RouteParameter.Optional, uri = RouterParameter.Optional }
);

{uri}パラメータの代わりに送信するBase64でエンコードされたURIがあります。不正な文字はありません(適切にフォーマットし、確認しました)。ただし、長さは約300〜400文字です。

long base64パラメータを使用してこのアドレスにDELETEリクエストを送信すると、400 BAD STATUS、INVALIDURL応答が返されます。パラメータを短くすると機能します。最大パスの問題があると思いますか?

パスパラメーターの代わりにクエリ文字列を使用することは機能しますが、RESTfulアプローチを使用したいと思います。より長いパスベースのパラメーターを許可するためにWebAPIプロジェクトで変更できる構成設定はありますか?

これは機能します:

http://localhost:99999/api/reg/10?uri=<long_base64_parameter>

これは動作しません:

http://localhost:99999/api/reg/10/<long_base64_parameter>
4

1 に答える 1

1

これらは関連しているようです:

IIS7では要求URLが無効です

ASP.NET MVC、URLルーティング:最大パス(URL)の長さ

以下も参照してください。

http://social.msdn.microsoft.com/Forums/nl/netfxnetcom/thread/723e6bfd-cab7-417b-b487-67f1dcfa524f

デフォルトでパスセグメントの制限があるように見えますが、いくつかの回避策があります(URLの書き換え、レジストリの変更など)。

于 2012-12-09T04:16:23.237 に答える