我有一个带有Angular 2的ASP .NET MVC应用程序。我添加了一个WebApi控制器并尝试通过角度服务与它进行通信,但是它没有使用两个参数访问WebApi Controller中的操作。
我想我已经阅读了有关此事的所有问题。我在MVC之前注册了webApi路由。如果它不需要任何参数,我可以访问该操作。但是,如果我尝试用参数命中它,我一直找不到登录操作的404 - POST localhost:12312 / api / userapi / login 404(Not Found)。
我尝试了各种格式的WebApiConfig - 带有可选参数,没有它们,带有动态控制器占位符,具有动作和控制器的确切名称等。我也尝试了路由属性,但没有效果。
我尝试将其作为单个参数"对象凭据"并修改了WebApiConfig.cs ,但结果没有改变。
RouteConfig.cs
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{*anything}",
defaults: new { controller = "Home", action = "Index", id =
UrlParameter.Optional }
);
WebApiConfig.cs
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "api",
routeTemplate: "api/userapi/login/{username}/{password}",
defaults: new { username = RouteParameter.Optional, password =
RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
UserApiController.cs
[HttpPost]
public HttpResponseMessage LogIn(string username, string password)
{
return ToJson(userRep.LogIn(username, password));
}
角
this.http.post(url, JSON.stringify(credentials), { headers: headers })
.subscribe(res => {
resolve(res.json());
}, (err) => {
reject(err);
});
答案 0 :(得分:1)
我不确定为什么它不能以你的方式工作(使用parmas),但我只是创建一个像
这样的模型public class LoginModel{
public UserName {get;set;}
public Password {get;set;}
}
然后在登录mathod
[HttpPost]
public HttpResponseMessage LogIn(LoginModel model)
{
return ToJson(userRep.LogIn(model.username, model.password));
}
不需要自定义路由只需使用默认配置