我尝试使用区域配置Mvc路线。
这是我尝试的最简单版本。
演示控制器
using System;
using Microsoft.AspNetCore.Mvc;
namespace SampleApp.Controllers
{
[Area("Demo")]
public class DemoController: Controller
{
[HttpGet("hello")]
public string Hello() => "Hello Guest";
}
}
Startup.cs
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc(routes =>
{
routes.MapAreaRoute(
name: "demo_area",
areaName: "Demo",
template: "super/demo/{controller}/{action}",
defaults: new { controller = "Demo", action = "Hello" });
});
}
我还实现了一个Debug控制器来检查返回以下路由定义的路由器:
{
"action": "Hello",
"controller": "Demo",
"dataTokens": null,
"defaults": null,
"name": null,
"template": "hello" // -> Get http://localhost:5000/hello
}
答案 0 :(得分:0)
找到它(非常失望)。
再次阅读路由文档有一个明确的声明:«传统和基于属性的路由不能混合»。在这些情况下,后者获胜。
我使用HttpGet
属性时错了。
修改强>
我做了一些工作来克服这个限制。我不知道框架提供的等效简单解决方案。
我已经实现了一个简单的RouteModuleAttribute
和IRouteBuilder
扩展方法,它们可以互动以提供请求的行为。
此线程超出范围的完整解决方案可在GitHub上找到。