MVC4 に Web API があります。ajax を使用してデータを投稿すると 404 が返されますが、その理由がわかりません。
言語コントローラー:
[AcceptVerbs("POST")]
public void Delete(string id)
{
Guid guid = Guid.Parse(id);
Language language = db.Languages.Find(guid);
db.Languages.Remove(language);
db.SaveChanges();
}
ルーティング:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}
}
そしてJavaScript(AngularJSを使用):
this.delete = function (lang) {
$http({
method: "POST",
url: "/api/language/delete",
data: JSON.stringify({ id: lang.id })
})
.success(function (response) {
return true;
})
.error(function (response) {
return false;
});
};
次のエラー メッセージが表示されます。
**{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:32166/api/language/delete'.","MessageDetail":"No action was found on the controller 'Language' that matches the request."}**
理由はわかりませんが、うまくいくようです。重要な情報が欠落しているように感じます。