我在API控制器上有一个方法,我在属性中设置了路径,但我似乎无法将字符串传递给它。当我尝试使用浏览器中的Ajax请求时,控制台显示以下错误:
BAD REQUEST - 由于服务器无法处理请求 语法无效。
我经过的字符串非常庞大,但不幸的是,这是我将数据导入到我正在使用的遗留应用程序中的唯一方法。我使用的测试网址是(支持你自己):
http://localhost:50915/api/job/import/ALMIG³123456³2%20DAY%20ECONOMY³20170720³20170721³0³³³³22³Lara%20Croft%20Way³Derby³³³DE23%206GB³Stuff³10³1³0³25³0³³1%7CI%20Great%20Danger³0³0³0³³³0³true³0³³³³³³³1³0³0³16³Baden%20Road³Stoke-on-Trent³³³ST6%201SA³³0³0³0³³³³0³0³0³0³³0³1³0³³³³³³³³³³³Liane³07730044916³Lara³07730044916³0³d2f0acf7-50e1-4a53-96ce-4fffd00b1a96³0
这个方法的定义如下,里面的代码是无关紧要的,因为我在方法的开头设置了一个永远不会被击中的断点:
[System.Web.Http.HttpPost]
[System.Web.Http.Route("api/job/import")]
public int TmsImport([FromBody]string import)
{
// do something...
}
编辑:添加了Ajax请求
job.confirmBookings = function () {
// TMS Import
job.toConfirmRow.filter(function(obj) {
var jobRow = obj;
var strArray = [];
for (var prop in jobRow) {
if (jobRow.hasOwnProperty(prop)) {
strArray.push(jobRow[prop]);
}
}
var joinedStr = strArray.join(job.seperator);
$.ajax({
type: "POST",
crossDomain: true,
data: joinedStr,
url: job.tmsString,
contentType: "application/json;charset=utf-8",
success: function (data, status, xhr) {
console.log("TMS ID: " + data + " | " + status);
},
error: function (xhr) {
alert(xhr.responseText);
}
});
});
答案 0 :(得分:1)
首先正确格式化路线模板
[HttpPost]
[Route("api/job/import")] //Matches POST api/job/import
public int TmsImport([FromBody]string import) {
// do something...
}
此外,您应该将数据发布在请求正文中。如果有效负载很大,那么您不希望在URL中