Ajax MVC4:从视图调用Api控制器
我正在尝试使用Ajax从视图调用WebAPI控制器方法。 我在视图中的ajax调用如下所示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
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 }
);