如何将.NET 3.1中的路由配置转换为.NET 5的等效写法?
等效实现代码
你只需要在UseEndpoints配置块中调用MapControllerRoute方法即可,写法和旧版路由配置几乎一致:
app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "Default", pattern: "{*stuff}", defaults: new { controller = "Default", action = "DefaultAction" } ); });
配套控制器方法示例
对应的DefaultController中需要声明同名的stuff参数来接收捕获的路径值:
public class DefaultController : Controller { public IActionResult DefaultAction(string stuff) { // 访问localhost:5001/aRandomStuff时,stuff的值就是"aRandomStuff" // 你的业务逻辑 return Ok(); } }
注意事项
- 该全匹配路由规则需要放在所有路由配置的最后,避免优先级过高拦截其他正常的路由请求
- 如果要支持捕获空路径(也就是直接访问localhost:5001时也触发该路由),可以给
stuff参数添加默认值,比如把pattern改为"{*stuff?}"
内容的提问来源于stack exchange,提问作者CodeMuppet
相关产品推荐
相关产品推荐

