2017-04-10 84 views
0

我的應用程序是一個經典的Asp.Net應用程序,而不是MVC。現在我想添加ApiController到它。Asp.net WebAPI給出錯誤沒有找到與請求URI匹配的HTTP資源

我已新增下列API控制器

public class AlfrescoController : ApiController 
{ 
    [System.Web.Http.Route("api/alfresco")] 
    public IEnumerable<string> Get() 
    { 
     return new string[] { "value1", "value2" }; 
    } 

    // GET api/<controller>/5 
    public string Get(int id) 
    { 
     return "value"; 
    } 

    // POST api/<controller> 
    public void Post([FromBody]string value) 
    { 
    } 
} 

在Global.asax中我路由代碼就像下面,

protected void Application_Start(object sender, EventArgs e) 
{ 
    RouteTable.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}", 
       defaults: new { id = System.Web.Http.RouteParameter.Optional } 
      ); 

} 

現在,當我嘗試請求http://localhost:52182/api/alfresco/,它給了我下面的錯誤,

此XML文件似乎沒有任何與其關聯的樣式信息。文檔樹如下所示。 找不到與請求URI'http://localhost:52182/api/alfresco/'匹配的HTTP資源。 未找到與名爲「alfresco」的控制器相匹配的類型。

請讓我知道,如果我做錯什麼在這裏,我試圖從計算器所有的解決方案,似乎沒有任何在Global.asax.cs中工作

回答

0

更改代碼:

protected void Application_Start(object sender, EventArgs e) 
{ 
    GlobalConfiguration.Configure(Register); 
} 

public static void Register(HttpConfiguration config) 
{ 
    config.MapHttpAttributeRoutes(); //Will have preference over the default route below 

    config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
    ); 
} 

「MapHttpAttributeRoutes」是Nuget包中提供的擴展方法:「Microsoft.AspNet.WebApi.Core」。所以你必須先安裝它。

+0

嘿,非常感謝,它的工作! – avdhoota

相關問題