Я знаю, что об этом спрашивали десятки раз, но я действительно расстроен, так как ни одно из предложений, которые я могу найти, не работает для меня, и я действительно застрял.
Моя проблема в том, что яя не могу вызвать Web Api из ajax, независимо от того, какие конфигурации / комбинации / любые маршруты и все, что я пробую, ни один из них не работает, и я просто получаю 404.
Это мой файл Global.asax:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
GlobalConfiguration.Configure(WebApiConfig.Register);
}
Это мой WebApiConfig.cs в папке App_Start:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
Это мой класс UserController:
public class UserController : ApiController
{
public IHttpActionResult GetUserDataById(string id)
{
Clients jsonData = Http.downloadJsonData<Clients>(InsuranceGlobal.clientsUrl);
Client user = jsonData.clients.Where(u => u.id == id).FirstOrDefault();
return Ok(user);
}
}
Это мой Ajax-вызов внутри cshtmljavascript section:
$("#btnGetUserById").click(function () {
$('#userByName').empty();
$("#gettingByIdMsg").text(" Getting User...");
$.ajax({
url: '../api/User',
type: "GET",
contentType: "application/json",
dataType: "json",
data: { id: $("#userId").val() },
success: function (data) {
$('<tr>', { html: formatItem(data) }).appendTo($('#userByName'));
$("#usersTable").removeClass("hidden");
$("#gettingByIdMsg").text("");
},
fail: function (jqXHR, textStatus) {
$("#gettingByIdMsg").text("Request failed: " + textStatus);
}
});
});
Я попробовал GET, а также POST с декоратором [HttpPost] безрезультатно.
Я думаю, у меня установлены все необходимые пакеты Web Api NuGet, и приложение компилируетсябез ошибок, но веб-API не вызывается.
Пожалуйста, помогите.
Редактировать 1:
IДолжен отметить, что - по назначению - я не начал новый проект с шаблоном WebApiВ Visual Studio вместо этого я запустил проект MVC, а затем установил все необходимые пакеты и конфигурацию NuGet WebApi (возможно, я что-то пропустил, не знаю).