Я использую веб-формы Asp.Net с WebAPI 2. У меня есть метод, который работает с GET, но когда я использую POST, он не работает. Если вы видите ниже, внутри этого метода есть точка останова, и она даже не достигает ее при вызове POST. Как ни странно, когда я использую Postman для проверки метода, он работает с POST. Что я делаю не так?
Мой код jquery
$.ajax({
url: 'MyController/GetUserDetail',
type: 'POST',
async: true,
dataType: 'json',
data:
{
"search": myvariable
},
success: function (response) {
}
});
Мой метод веб-API. При использовании [HttpGet], а также изменении jquery с POST на GET, это работает. Но для POST этот метод никогда не вызывается, поскольку точка останова никогда не срабатывает, и я также не получаю никаких ошибок.
[HttpPost]
public User GetUserDetail(string search)
{ //breakpoint here
}
Моя конфигурация маршрута
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
I don't receive any error either
в ответе будет ошибка. Вы можете использовать вкладку сети консоли, чтобы найти ее, сделав запрос в своем JS-коде. - person Rory McCrossan   schedule 11.02.2020MyApp/MyController/MyAction
использовать@Url.Action("GetUserDetail", "MyController")
, чтобы быть уверенным (но не в том случае, если он находится в файле .js). 2) Удалите атрибут[HttpPost]
(по крайней мере, на данный момент, чтобы исключить его), если у вас нет других перегрузок - в любом случае это не должен быть POST, поскольку это явно GET GetUserDetail. - person freedomn-m   schedule 11.02.2020[HttpGet]
будет ограничивать для GET, а не указывать, что это метод получения. Если есть только один метод (как подразумевается, но не указан в ОП), то ему не нужен[HttpGet]
- person freedomn-m   schedule 11.02.2020