我的应用程序是经典的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的所有解决方案,似乎没有任何工作
答案 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;。所以你必须先安装它。