asp.net – 在ASP MVC 6中为多个路由分配给同一个控制器或者动作
题:
有没有办法在ASP.NET MVC 6应用程序中将两个不同的路由(带有参数)分配给同一个控制器? 我试过了: 我尝试使用多个路由属性到控制器类和单个操作,没有工作. 笔记: >我正在使用ASP.NET Core 1.0 RC1. 例: [Produces("application/json")] [Route("api/v2/Log")] /// The old route is "api/LogFile" which I want to be still valid for this controller. public class LogController : Controller { [HttpGet("{id}",Name = "download")] public IActionResult GetFile([FromRoute] Guid id) { // ... } } 在上面的例子中:api / LogFile / {some-guid}是旧路由,api / v2 / log / download / {some-guid}是新的路由.我需要两条路线调用相同的动作. 解决方法
在新的RC1应用程序中,控制器级别有两个路由属性可以正常工作:
[Produces("application/json")] [Route("api/[controller]")] [Route("api/old-log")] public class LogController: Controller { [HttpGet] public IActionResult GetAll() { return Json(new { Foo = "bar" }); } } http:// localhost:62058 / api / log和http:// localhost:62058 / api / old-log返回预期的json.我看到的唯一注意事项是,您可能需要设置属性的名称/顺序属性,以防您需要为其中一个操作生成URL. 有2个属性的动作也可以: [Produces("application/json")] public class LogController : Controller { [Route("api/old-log")] [Route("api/[controller]")] [HttpGet] public IActionResult GetAll() { return Json(new { Foo = "bar" }); } } 但是,在控制器级别和特定操作路线上设置一般路由时,您需要小心.在这些情况下,控制器级别的路由被用作前缀,并被添加到url(有关这个行为here的很好的文章).这可能会让您得到一组不同于您期望的URL,例如: [Produces("application/json")] [Route("api/[controller]")] public class LogController : Controller { [Route("api/old-log")] [Route("")] [HttpGet] public IActionResult GetAll() { return Json(new { Foo = "bar" }); } } 在最后一种情况下,您的应用程序将侦听的2条路由将是http:// localhost:62058 / api / log和http:// localhost:62058 / api / log / api / old-log,因为api / log被添加为在动作级别定义的所有路由的前缀. 最后,另一个选择是为新路由使用属性,然后使用启动类中的路由表来提供照顾旧api的特定路由. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 如何正确覆盖EF 4.1中的SaveChanges函数
- remoting和webservice有什么区别
- asp.net-mvc – 将整数数组传递给webapi方法
- asp.net – 将unicode数字从英语转换为devanagari
- 为什么在ASP.NET MVC中使用JsonResult时使用WCF REST?
- asp.net-mvc – 在发送到视图之前如何修改控制器动作中的表
- asp.net-mvc – 使用ASP.NET MVC,Linq To SQL和StructureMa
- asp.net-core – 在发布ASP.NET Core应用程序时自动执行迁移
- .net-core – 存储Azure Vault客户端ID和客户端密钥
- asp.net读取磁盘文件、删除实例代码
- .net – 如何将MS Chart for 3.5更新为MS Chart
- asp.net-mvc – MVC,不再“假设”使用HttpContex
- 在ASP.NET MVC 3 Web应用程序项目之间共享视图
- asp.net – 以编程方式将CSS类添加到ListItem
- 我们可以在ASP.NET Webforms(* .aspx页面)中使用
- 四种为HttpClient添加默认请求报头的解决方案
- asp.net – 部署后强制刷新网站
- ASP和C#之间的语义差异?
- asp.net-mvc – 尝试创建类型为’TypeNewsContro
- 为ASP.Net AJAX String.format方法创建TypeScrip