Asp.net WebAPI给出错误没有找到与请求URI匹配的HTTP资源

时间:2017-04-10 16:09:43

标签: asp.net asp.net-web-api

我的应用程序是经典的Asp.Net应用程序,而不是MVC。现在我想添加ApiController。

我添加了以下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'的控制器匹配的类型。      

如果我在这里做错了,请告诉我,我已经尝试了stackoverflow的所有解决方案,似乎没有任何工作

1 个答案:

答案 0 :(得分:2)

将Global.asax.cs中的代码更改为:

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 }
    );
}

&#34; MapHttpAttributeRoutes&#34;是Nuget包中可用的扩展方法:&#34; Microsoft.AspNet.WebApi.Core&#34;。所以你必须先安装它。