【发布时间】:2014-07-23 19:07:58
【问题描述】:
在使用 AngularJS 的“$http.put”时,我在 PUT 请求中遇到 404 错误。
这是我的相关 AngularJS 代码:
/* toggles whether or not the link is disabled */
toggleLinkStatus: function (isActive, linkGUID) {
$http.put('/Explorer/Link/ToggleLinkStatus',
{
isActive: isActive,
linkGUID: linkGUID
}
);
}
还有我相关的 C# 控制器代码:
[HttpPut]
public IHttpActionResult ToggleLinkStatus(Boolean isActive, Guid linkGUID)
{
return Ok();
}
还有我的 WebApiConfig 代码
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
/** define routes for Explorer API */
config.Routes.MapHttpRoute(
name: "ExplorerAPI",
routeTemplate: "Explorer/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
我在这里缺少什么?在调用的标头中,我可以看到数据正在请求有效负载中传递:
isActive: true
linkGUID: "b94badb3-2917-4129-9ae3-35d2a635f66d"
如果我使用 POSTMAN 执行普通查询字符串 PUT,它会通过,但当我使用 AngularJS 时不会。
更新
这里有一些有趣的事情,如果我使用以下 angularJS 请求,它会通过:
/* toggles whether or not the link is disabled */
toggleLinkStatus: function (isActive, linkGUID) {
$http.put('/Explorer/Link/ToggleLinkStatus',
{
isActive: isActive,
linkGUID: linkGUID
},
{
params:
{
isActive: isActive,
linkGUID: linkGUID
}
}
);
}
它也适用于:
/* toggles whether or not the link is disabled */
toggleLinkStatus: function (isActive, linkGUID) {
$http.put('/Explorer/Link/ToggleLinkStatus',
{
},
{
params:
{
isActive: isActive,
linkGUID: linkGUID
}
}
);
}
【问题讨论】:
-
不确定,您是否尝试过在网址后使用“/”?你试过 jquery $.put() 吗? LinkController 是 ApiController 吗?这有点不同。通常,您只需将一些 json 放入带有 id 的 url 中,并期望获取相同的 URL 会返回您刚刚放入的 JSON...
-
我只是放了一个斜杠,没有结果,同样的错误。 LinkController 确实是一个 ApiController。
标签: c# javascript ajax asp.net-mvc angularjs