Ajax MVC4:从视图调用Api控制器

Ajax MVC4:从视图调用Api控制器,ajax,asp.net-mvc-4,controller,asp.net-web-api,Ajax,Asp.net Mvc 4,Controller,Asp.net Web Api,我正在尝试使用Ajax从视图调用WebAPI控制器方法。 我在视图中的ajax调用如下所示 function loginuser() { var name = $("#txt_usrname").val(); var pass = $("#txt_password").val(); var source = { 'username': name, 'password': pass, } $.ajax({ ty

我正在尝试使用Ajax从视图调用WebAPI控制器方法。 我在视图中的ajax调用如下所示

function loginuser() {
    var name = $("#txt_usrname").val();
    var pass = $("#txt_password").val();
    var source = {
        'username': name,
        'password': pass,
    }
    $.ajax({
        type: "POST",
        dataType: "json",
        data: source,
        url: 'api/Login', // url of Api controller not mvc
        success: function (data) {
              if(data.redirect)
                alert("Redirect true !");

        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            console.log(errorThrown);
        }
    });

}
我可以从任何视图调用api控制器,以下场景除外

在webconfig中设置登录url后,如下所示

<authentication mode="Forms">
      <forms loginUrl="~/Account/Login" path="/" defaultUrl="~/Home/Index" name=".ASPXFORMSAUTH" timeout="2880"/>
    </authentication>
对于webApiConfig

config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
我自己弄明白了。。 我使用的身份验证限制调用控制器方法,而不是用作loginUrl的方法。因此,除了Account\login之外,对控制器的所有引用都映射到Account\login本身


在控制器上使用[authorize]属性来解决此问题。

您可以发布您的路线吗?
config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );