以前,人们会在Global.aspx.cs
中添加类似的内容,而在.NET Core中已经消失了:
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
这是我目前在
Startup.cs
中(对于.NET Core)的内容: app.UseDefaultFiles();
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapSpaFallbackRoute(
name: "spa-fallback",
defaults: new { controller = "Home", action = "Index" });
});
问题在于,在MVC(内核前)中,
routes
是RouteCollection
,而在.NET Core中,它是Microsoft.AspNetCore.Routing.IRouteBuilder
,因此IgnoreRoute
不是有效的方法。 最佳答案
您可以为此编写middleware。
public void Configure(IApplciationBuilder app) {
app.UseDefaultFiles();
// Make sure your middleware is before whatever handles
// the resource currently, be it MVC, static resources, etc.
app.UseMiddleware<IgnoreRouteMiddleware>();
app.UseStaticFiles();
app.UseMvc();
}
public class IgnoreRouteMiddleware {
private readonly RequestDelegate next;
// You can inject a dependency here that gives you access
// to your ignored route configuration.
public IgnoreRouteMiddleware(RequestDelegate next) {
this.next = next;
}
public async Task Invoke(HttpContext context) {
if (context.Request.Path.HasValue &&
context.Request.Path.Value.Contains("favicon.ico")) {
context.Response.StatusCode = 404;
Console.WriteLine("Ignored!");
return;
}
await next.Invoke(context);
}
}
关于asp.net-core - 如何忽略ASP.NET Core中的路由?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39517816/