簡體   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