Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 要转到默认文件的所有ASPNET核心路由_C#_Asp.net Core - Fatal编程技术网

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();