タイトルにあるように、MVC3アプリでは、POSTリクエストをコントローラーに送信し、400エラーが発生します。
要求には、コントローラーがファイルの内容を取得して応答で送り返すために使用するIDが含まれています。
私が使用していたハードコードされたURLが原因である可能性があることを示唆するいくつかの関連するスタックオーバーフローの投稿を読みましたが、それ以来、URLヘルパーを使用してこの問題が発生し続けています。
これが私のコントローラーです:
[HttpPost]
public ActionResult GetContent(string id)
{
// Decrypt string to get filepath.
string file = EncryptStrings.DecryptAESString(id);
string content = String.Empty;
if(System.IO.File.Exists(file))
{
content = System.IO.File.ReadAllText(file);
}
return Content(content);
}
私のjQueryコード:
function setContent(id) {
$.post('@Url.Action("GetContent", "Content")/' + id, null,
function (data) {
$('#article').html(data);
bringToFront('article-container');
}, 'text');
}
そして、リクエストがどのように見えるかの例(長いリクエストを可能にするためにmaxUrlLengthを増やしました):
http://localhost/KBLite/Content/GetContent/545E55A34A5B6EE892286D481D177C149A003AAA0F44FAAD432970A9BADA5B79713344D2D80580DCA3345D520742E358A2089BF2E01EA553203AFCA27C96B4150923D33EC57D93F55241F9398D217E3B38609449CB64DCD2D2C31C850E5EBB452CC5A8F3B2F71D0B30E282D16F394FDC60696C3661372B1D200AE1B45371473DD7DC077BEAE475CD7D498F0AEDD63727
何かご意見は?