我目前正在迁移一个旧的网站从ASP.NET与.htaccess到ASP.NET核心2,我面临一些问题的路由。这是一个大的网站,几乎有30个链接,我必须保持与旧的网址结构。因此,我尝试扩展Startup类的app.UseMvc(route)函数。
这是我的代码:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc(routes => new CustomRouting("mydomain.com",app).GetRouts());
}
}以下是我的其他课程:
public class CustomRouting
{
string domain;
IApplicationBuilder app;
public CustomRouting(string domain, IApplicationBuilder app)
{
this.domain = domain;
this.app = app;
}
public IRouteBuilder GetRouts()
{
IRouteBuilder route = new RouteBuilder(app);
switch(domain)
{
case "mydomain.com":
route = new DeRouting(app).GetRoutes();
break;
default:
route = new DeRouting(app).GetRoutes();
break;
}
return route;
}
}
public class DeRouting
{
IApplicationBuilder app;
public DeRouting(IApplicationBuilder app)
{
this.app = app;
}
public IRouteBuilder GetRoutes()
{
IRouteBuilder routes = new RouteBuilder(app);
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
//here should come more
return routes;
}
}目前,我得到以下错误:
Microsoft.AspNetCore.Routing.RouteCreationException:‘必须在IRouteBuilder上设置默认处理程序。’
如何为这些规则创建路由集合?将有更多类型的这些url将处理多个域。
发布于 2018-05-23 08:34:35
public class CustomRouting
{
string domain;
IApplicationBuilder app;
IRouteBuilder routeBuilder;
public CustomRouting(string domain, IApplicationBuilder app, IRouteBuilder routes)
{
this.domain = domain;
this.app = app;
this.routeBuilder = routes;
}
public IRouteBuilder GetRouts()
{
switch(domain)
{
case "mydomain.com":
route = new DeRouting(app, routeBuilder).GetRoutes();
break;
default:
route = new DeRouting(app, routeBuilder).GetRoutes();
break;
}
return route;
}
}
public class DeRouting
{
IApplicationBuilder app;
IRouteBuilder routeBuilder;
public DeRouting(IApplicationBuilder app, IRouteBuilder routes)
{
this.app = app;
this.routeBuilder = routes;
}
public IRouteBuilder GetRoutes()
{
routeBuilder.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
//here should come more
return routes;
}
}
// StartUp.cs
app.UseMvc(routes =>
{
new RouteManager(app,routes).GetRoutes();
});https://stackoverflow.com/questions/47787751
复制相似问题