C# 要转到默认文件的所有ASPNET核心路由
我希望除了C# 要转到默认文件的所有ASPNET核心路由,c#,asp.net-core,C#,Asp.net Core,我希望除了/api/*之外的所有请求都命中wwwroot文件夹中的默认文件,因为我正在运行spa 我已经配置了这个: app.UseIdentityServer(); app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions { Authority = identityServerAppOptions.Value.Authority, RequireHttpsMetadata = fal
/api/*
之外的所有请求都命中wwwroot文件夹中的默认文件,因为我正在运行spa
我已经配置了这个:
app.UseIdentityServer();
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = identityServerAppOptions.Value.Authority,
RequireHttpsMetadata = false,
ApiName = "all",
});
app.UseDefaultFiles(new DefaultFilesOptions
{
DefaultFileNames = new List<string> { "index.html" }
});
app.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = ctx =>
{
ctx.Context.Response.Headers.Append("Cache-Control", "no-cache");
}
});
app.UseMvc(routes => routes.MapRoute(
name: "default",
template: "api/{controller=Details}/{id?}"));
app.UseIdentityServer();
app.UseIdentityServerAuthentication(新的IdentityServerAuthenticationOptions
{
Authority=identityServerAppOptions.Value.Authority,
RequireHttpsMetadata=false,
ApiName=“全部”,
});
app.UseDefaultFiles(新的DefaultFilesOptions
{
DefaultFileNames=新列表{“index.html”}
});
app.UseStaticFiles(新的StaticFileOptions
{
OnPrepareResponse=ctx=>
{
Append(“缓存控制”,“无缓存”);
}
});
app.UseMvc(routes=>routes.MapRoute(
名称:“默认”,
模板:“api/{controller=Details}/{id?}”);
但它不会从静态文件位置将/Account/Login
路由到默认文件
我尝试过在静态文件选项中使用
RequestPath
,但这听起来并不正确 可以使用和正则表达式选择性地将请求URL重写为/index.html
要跳过以/api/*
开头的所有请求,请使用regexp:@“^(?!api/).*$”
要跳过以/api/*
开头的所有请求以及包含点
的所有请求,请执行以下操作:@^(?api/|.*.*.*).$”
我想正则表达式可以被优化。但是概念是一样的。磁盘上有像wwwroot/Account/Login/index.html这样的文件吗?没有所有的文件都在为SPA应用程序服务的结构中
wwwroot
这不接受文件请求,所以vendor.js
将被重写为index.html
我刚才做的^/(?!api/).*$
INSTEAD需要一个不会重写以文件结尾的URL的标题extension@CallumLinington,让我们尝试排除任何带点的字符串<代码>@“^(?api/|.\..*).$”
var options = new RewriteOptions().AddRewrite(@"^(?!api/|.*\..*).*$", "index.html", true);
app.UseRewriter(options);
//should be after a rewriter in middleware pipeline
app.UseDefaultFiles();
app.UseStaticFiles();