【发布时间】:2014-10-13 23:13:50
【问题描述】:
我正在尝试通过将单个字符串作为参数传递来执行 http.Get 请求。
到目前为止我尝试过的角码是,
1)
var abseURL = 'http://localhost:17493/api/UsersApi/GetUsersByEmail/';
var email ='testemail@domain.com';
$http.get(abseURL + email).then(OnComplete, OnError);
- 返回 http 404 错误
2)
$http({
url: abseURL,
method: "GET",
params: { email: 'testemail@domain.com'}
}).then(OnComplete,OnError);
- 上述http.get请求返回Http 500错误
我的 webApi 控制器方法定义为,
[ActionName("GetUsersByEmail")]
[CamelCasedApiControllerAttribute]
public async Task<IHttpActionResult> GetUsersByEmail(string email)
{
Users users = await db.Users.FindAsync(email);
if (users == null)
{
return NotFound();
}
return Ok(users);
}
此外,在我的 Global.asax.cs 文件中,我已将路线映射如下
protected void Application_Start(object sender, EventArgs e)
{
GlobalConfiguration.Configure(config =>
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "get", id = RouteParameter.Optional }
);
});
}
如果我传递一个 Int 参数,它会在我的 WebApiController 中找到正确的操作 但是当我使用字符串参数更改调用时,它无法找到正确的操作方法。
【问题讨论】:
标签: angularjs asp.net-web-api2