[英]MVC 4 Web Api 404
我已经为此寻找了一些灵感,似乎我已经正确设置了它,并在其他问题中进行了所有更正。
当调用“ http:// localhost / en / api / cart / get ”时,我得到:
{"Message":"No HTTP resource was found that matches the request URI 'http://localhost/en/api/cart/get'.","MessageDetail":"No type was found that matches the controller named 'cart'."}
...当尝试在EPiServer CMS / Commerce 7.5+解决方案中访问ApiController设置时。
控制器看起来像这样:
public class CartController : ApiController
{
[HttpGet]
public string Get()
{
return "OK";
}
}
在Global.asax.cs中,我有以下内容:
protected void Application_Start()
{
RegisterApis(GlobalConfiguration.Configuration);
RegisterAPis看起来像这样:
public static void RegisterApis(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
"Api", // Route name
"api/{controller}/{action}/{id}", // URL with parameters
new { id = RouteParameter.Optional } // Parameter defaults
);
config.Routes.MapHttpRoute(
"LanguageAwareApi", // Route name
"{language}/api/{controller}/{action}/{id}", // URL with parameters
new { id = RouteParameter.Optional } // Parameter defaults
);
// We only support JSON
var appXmlType = GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}
在同一台计算机上,我有运行IIS的EPiServer Commerce入门套件,并且用于注册api控制器的代码是相同的。 该站点运行良好,可以正确进行api调用,但是在我的站点上,我只能看到404。
因此,我可能缺少一些配置,但是我一生都无法弄清它是什么。 奇怪的是,在我的网站上,我正在运行EPiServer ServiceApi,该服务创建了/ episerverapi Web Api映射,并且工作正常。
有人知道为什么我的APiControllers无法正常工作吗?
在Web API中,http动词可帮助框架找到要执行的正确操作并返回结果。 例如,在使用get
方法的情况下,您只需通过get
http动词来调用控制器:
http://localhost/en/api/cart
它将在Cart
控制器类中绑定Get
操作方法。 它对Post
, Put
, Delete
方法也有效。 保留asp.net Web API的默认路由
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
尝试打电话给
http://localhost/en/api/cart
在WebAPI中,如果方法的名称与HTTP谓词匹配,则在该控制器上使用该谓词时,它将调用该方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.