繁体   English   中英

MVC 4 Web API 404

[英]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操作方法。 它对PostPutDelete方法也有效。 保留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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM