【发布时间】:2026-01-04 05:20:03
【问题描述】:
我正在尝试创建一种日志记录方法,该方法适用于我的所有 javascript 调用。 情况不太好。我收到以下错误:
在控制器“日志”上找不到与请求匹配的操作。
我的控制器上有以下代码:
[System.Web.Mvc.HttpPost]
public void Post(string msg)
{
using (var ctx = new DataClassesDataContext(ConfigurationManager.ConnectionStrings["EasyViewDkConnectionString"].ToString()))
{
ctx.UserInputInsert(msg, HttpContext.Current.Request.UserHostAddress);
}
}
非常简单。我有点不确定我的路由是否是问题所在。基本上,我只有默认路由:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
为了发布数据,我使用了这个 javascript:
function Log(msg) {
$.ajax({
url: "/api/Log/",
data: msg,
type: "POST",
contentType: "application/json;charset=utf-8"
});
}
很明显,我做错了什么。这可能是我的路由,但我似乎无法解决它。我已经尝试将控制器上的 msg 参数更改为 id,但它仍然是一样的。
【问题讨论】:
-
我注意到您正在将
[System.Web.Mvc.HttpPost]操作过滤器应用于您的发布操作。这是错误的,不需要。System.Web.Mvc命名空间用于 MVC 控制器,而System.Web.Http命名空间用于 Web Api 控制器。名称相似,但完全不同。您确定您的控制器是 Web Api 控制器吗? -
@Brett,是的,它是一个 Web api 控制器。我实际上把 httppost 放在那里,我想我打错了命名空间。
标签: javascript asp.net-mvc asp.net-web-api