次の AJAX リクエストがあります。
var recordToRevert = $(this);
var umbrellaId = $(this).data("id");
var requestData = {
umbrellaId: umbrellaId,
};
$.ajax({
url: "/Express2/api/BenefitBank/RevertTransactionUmbrella",
type: "POST",
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(requestData),
headers: {
"Authorization-Token": "7,181,22",
"CentreNumber": "0"
}
}).done(function (data) {
if (data.FoundRevertableTransactions) {
recordToRevert.parent().html("<span class=\"success\">Reverted</span)");
} else {
alert('Umbrella NOT reverted');
}
}).fail(function () {
alert('Umbrella NOT reverted');
});
ここでMVCコントローラー/アクションに送信しています:
[HttpPost]
[ActionName("RevertTransactionUmbrella")]
public HttpResponseMessage PostRevertTransactionUmbrella(Int64 umbrellaId)
{
if (ModelState.IsValid)
snip...
これは私が得ている応答です。
{"Message":"No HTTP resource was found that matches the request URI 'http://localhost/Express2/api/BenefitBank/RevertTransactionUmbrella'.","MessageDetail":"No action was found on the controller 'BenefitBank' that matches the request."}
ブレークポイントを設定しましたが、コントローラー アクションがヒットしません。JSON を正しく送信していないのでしょうか。
ただし、このリクエストは機能します。
$.ajax({
url: "/Express2/api/BenefitBank/GetRequestObjects",
type: "GET",
dataType: 'json',
contentType: 'application/json; charset=utf-8',
//data: JSON.stringify(requestData),
[HttpGet]
[ActionName("GetRequestObjects")]
public HttpResponseMessage GetRequestObjects()
{
return Request.CreateResponse(HttpStatusCode.Accepted, new BenefitBankRequestObjects());
}
コントローラーは両方のリクエストでヒットしているように見えますが、アクションは最初のリクエストでヒットしていませんか?