我的路線是這樣的:爲什麼會出現400錯誤的請求發送DELETE動詞的ASP.NET Web API是什麼時候?
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}/{uri}",
defaults: new { id = RouteParameter.Optional, uri = RouterParameter.Optional }
);
我有一個Base64編碼的URI,我在地方{} URI參數的發送。它沒有非法字符(我已經正確格式化並檢查確認)。但是,它大約有300-400個字符。
當我發送一個DELETE請求到使用長的base64參數這個地址,我得到一個400錯誤狀態,無效的URL響應。縮短參數時,它可以工作。我懷疑有最大路徑問題?
使用替代的路徑參數的查詢字符串的工作,但我寧願留在RESTful方法。有沒有一個配置設置,我可以改變我的Web API項目,以允許更長的基於路徑的參數?
這工作:
http://localhost:99999/api/reg/10?uri=<long_base64_parameter>
這不起作用:
http://localhost:99999/api/reg/10/<long_base64_parameter>
你如何格式化它是否正確? – JayC
你使用encodeURIComponent了嗎? https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURIcomponent – JayC
@JayC是,非法字符將被替換。我檢查了傳出的HttpRequest,並確認參數中只有字母數字字符。請注意,我的請求在使用查詢字符串時起作用,但在使用RESTful路徑參數時不起作用。 –