我看不到麻烦,我有很多动作的ApiController,当我尝试对动作之一做出请求时我有以下异常。提前致谢
// Angular脚本
var app = angular.module('app');
app.factory('userRepository', function ($http) {
var defaultUrl = 'api/UsersApi';
return {
addUserToRole: function (data) {
return $http({
method: 'POST',
url: defaultUrl + '/' + 'AddUserToRole',
data: {
RoleId: data.RoleId,
UserId: data.User.UserId
}
});
}
}
});
//Api controller
public class UsersApiController : ApiController
{
UserRepository uRep;
RoleRepository rRep;
[Authorize]
[HttpPost]
public HttpResponseMessage AddUserToRole(Int32 RoleId, Int32 UserId)
{
try
{
uRep = new UserRepository();
uRep.AddUserToRole(UserId, RoleId);
}
catch (Exception ex)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
}
}
//Route configuration
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi1",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi2",
routeTemplate: "api/{controller}/{action}"
);
}
}
请求后我得到了结果:
此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。 请求的资源不支持http方法'GET'。
如果我将HttpPost更改为HttpGet,则会出现以下错误
此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。 未找到与请求URI'/ api / UsersApi / AddUserToRole'匹配的HTTP资源。 未在与请求匹配的控制器“UsersApi”上找到任何操作。
答案 0 :(得分:1)
在您服务中的addUserToRole功能中,而不是使用帖子集params
设置数据:
params: {RoleId: data.RoleId,UserId: data.User.UserId}
另外,检查您的Web API路由配置以确保您允许使用相同HTTP方法的多个请求到一个控制器,通过在路由配置中包含操作名称来执行此操作。
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);