C# RESTAPI路由

C# RESTAPI路由,c#,asp.net,asp.net-mvc,rest,C#,Asp.net,Asp.net Mvc,Rest,我希望在控制器中使用以下各项: [Route("api/{controller}/{action}")] 而不是使用RouteTable.Routes.MapHttpRoute(…)。问题是它说Route不是一个属性类。我包括以下图书馆: using System.Web.Http; using System.Web.Http.Description; using System.Web.Http.Controllers; using System.Web.Routing; using Attr

我希望在控制器中使用以下各项:

[Route("api/{controller}/{action}")]
而不是使用
RouteTable.Routes.MapHttpRoute(…)
。问题是它说Route不是一个属性类。我包括以下图书馆:

using System.Web.Http;
using System.Web.Http.Description;
using System.Web.Http.Controllers;
using System.Web.Routing;
using AttributeRouting.Web.Http;
using System.Web.Mvc;
我有
Microsoft.Aspnet.mvc5.2.3
webapi 2.2
。我试着按照这一点,并补充说

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
       routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
       routes.MapMvcAttributeRoutes();
    }
}
但是它说,
IgnoreRoute
mapmvcattributterroutes
不存在。。我做错了什么?
谢谢

在web api中,您可以使用属性RoutePrefix作为所有控制器操作的前缀

您可以执行以下操作:

[RoutePrefix("api/apps")]
public class ApplicationsController : ApiController{

        [Route("get/{id}"))]
        public async Task<IHttpActionResult>GetApplications(int id)
[RoutePrefix(“api/apps”)]
公共类应用程序控制器:ApiController{
[路由(“get/{id}”)]
公共异步TaskGetApplications(int id)

我刚刚使用Mvc 5.2.2创建了一个快速测试项目。在控制器中,您只需要

 using System.Web.Mvc;
仅适用于RouteAttribute和
RouteConfig

using System.Web.Mvc;
using System.Web.Routing;

使用System.Web.Http;
使用AttributeRouting.Web.Http;
可能只是混淆了情况(不知道AttributeRouting.Web.Http来自哪个库,或者这是一个打字错误?)。您的WebApi配置应在另一个类中完成。还要确保引用了System.Web.Mvc.dll,以防万一

是的,我也有routeprefix..但它再次说明它不是一个属性类..如果您使用WebApi路由,您应该在webapiconfig文件中的register方法下添加调用'config.MapHt'tpAttributeRoutes()看看这是什么意思?用Web API 2看一下,你必须考虑的是,如果你使用MVC控制器,你必须使用不同的包,试试另一个解决方案SuggStEdgor可能问题是我有一个命名空间WebFrand,我不知道我是否应该增加使用系统…在命名空间内或外部…如果我使用System.Web.Mvc添加;在名称空间内部,一切都乱七八糟…怎么乱七八糟?您可以在名称空间内部或外部添加“using”。但是名称空间WebForms与上面的代码有什么关系?您是否应该发布更多代码?问题涉及使用System.Web.Mvc和System.Web.Routi需要的RouteConfig类ng在名称空间声明内部或外部的文件中,
System.Web.Mvc
System.Web.Http
名称空间都具有属性
Route
。请尝试删除对
System.Web.Mvc
的引用,或者按照上面的指定删除
RouteAttribute
的显式名称空间,并尝试放置[System.Web.HttpRoute”(“api/{controller})/{action}“)]通过正确的命名空间显式引用它。