C# 如何在startup.cs中添加/.well/openid配置路由以及控制器路由和角度路由?

C# 如何在startup.cs中添加/.well/openid配置路由以及控制器路由和角度路由?,c#,asp.net-core,identityserver4,openid-connect,C#,Asp.net Core,Identityserver4,Openid Connect,我正在使用Identityserver4创建登录服务器。我使用ASP.NETCore3.1实现功能,Angular9Project为登录/注册屏幕提供静态文件。正在从.netcore项目的wwwroot文件夹中为angular项目提供服务 为了确保角度路由与控制器路由一起正常工作,我在Startup.cs中添加了以下内容 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {

我正在使用Identityserver4创建登录服务器。我使用ASP.NETCore3.1实现功能,Angular9Project为登录/注册屏幕提供静态文件。正在从.netcore项目的wwwroot文件夹中为angular项目提供服务

为了确保角度路由与控制器路由一起正常工作,我在Startup.cs中添加了以下内容

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseCors(Constants.Constants.Policy);
        app.UseHttpsRedirection();
        app.UseRouting();
        app.UseAuthorization();
        app.UseIdentityServer();


        app.UseWhen(x => !x.Request.Path.Value.StartsWith("/Account"), builder =>
        {
            builder.Use(async (context, next) => {
                await next();
                if (context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value))
                {
                        context.Request.Path = "/index.html";
                        await next();
                }
            })
            .UseDefaultFiles(new DefaultFilesOptions { DefaultFileNames = new List<string>{"index.html"}})
            .UseStaticFiles();
        });

        app.UseEndpoints(endpoints =>
        {
             endpoints.MapControllerRoute(
                 name: "default",
                 pattern: "{controller=Account}/{action=Login}/{id?}");
        });
}
public void配置(IApplicationBuilder应用程序,IWebHostEnvironment环境)
{
app.UseCors(常数.常数.策略);
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseIdentityServer();
app.UseWhen(x=>!x.Request.Path.Value.StartsWith(“/Account”),builder=>
{
使用(异步(上下文,下一步)=>{
等待下一个();
if(context.Response.StatusCode==404&&!Path.HasExtension(context.Request.Path.Value))
{
context.Request.Path=“/index.html”;
等待下一个();
}
})
.UseDefaultFiles(新的DefaultFileOptions{DefaultFileNames=新列表{“index.html”})
.UseStaticFiles();
});
app.UseEndpoints(端点=>
{
endpoints.MapControllerRoute(
名称:“默认”,
模式:“{controller=Account}/{action=Login}/{id?}”);
});
}
这确保了当url包含时,它将通过控制器路由提供服务。Rest每隔一个URL路径将通过angular提供服务

当客户机应用程序试图访问url以获取发现文档时,就会出现问题。因为URL不是以“Account”开头的,所以它是通过angular提供的,也就是说,它被重定向到index.html页面

如何将.well-known/openid配置路由添加到我的Startup.cs,以便它返回发现文档

从客户端应用程序访问IdentityServer时出现的错误是

我在IdentityServer网页上看到的错误是


我不得不为route/添加一个异常。与/Account一起众所周知

app.UseWhen(x => !x.Request.Path.Value.StartsWith("/Account") && !x.Request.Path.Value.StartsWith("/.well-known/openid-configuration") , builder =>
        {
            builder.Use(async (context, next) =>
            {
                await next();
                if (context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value))
                {
                    context.Request.Path = "/index.html";
                    await next();
                }
            })
                .UseDefaultFiles(new DefaultFilesOptions { DefaultFileNames = new List<string> { "index.html" } })
                .UseStaticFiles();
        });
app.UseWhen(x=>!x.Request.Path.Value.StartsWith(“/Account”)&&!x.Request.Path.Value.StartsWith(“/.well-known/openid配置”),builder=>
{
使用(异步(上下文,下一步)=>
{
等待下一个();
if(context.Response.StatusCode==404&&!Path.HasExtension(context.Request.Path.Value))
{
context.Request.Path=“/index.html”;
等待下一个();
}
})
.UseDefaultFiles(新的DefaultFileOptions{DefaultFileNames=新列表{“index.html”})
.UseStaticFiles();
});

我不得不为route/添加一个异常。与/Account一起众所周知

app.UseWhen(x => !x.Request.Path.Value.StartsWith("/Account") && !x.Request.Path.Value.StartsWith("/.well-known/openid-configuration") , builder =>
        {
            builder.Use(async (context, next) =>
            {
                await next();
                if (context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value))
                {
                    context.Request.Path = "/index.html";
                    await next();
                }
            })
                .UseDefaultFiles(new DefaultFilesOptions { DefaultFileNames = new List<string> { "index.html" } })
                .UseStaticFiles();
        });
app.UseWhen(x=>!x.Request.Path.Value.StartsWith(“/Account”)&&!x.Request.Path.Value.StartsWith(“/.well-known/openid配置”),builder=>
{
使用(异步(上下文,下一步)=>
{
等待下一个();
if(context.Response.StatusCode==404&&!Path.HasExtension(context.Request.Path.Value))
{
context.Request.Path=“/index.html”;
等待下一个();
}
})
.UseDefaultFiles(新的DefaultFileOptions{DefaultFileNames=新列表{“index.html”})
.UseStaticFiles();
});

我在Startup.cs中使用了app.UseIdentityServer()中间件。在这里复制代码时,它不知怎么被遗漏了。即使这样也会遇到同样的问题。我在Startup.cs中使用了app.UseIdentityServer()中间件。在这里复制代码时,它不知怎么被遗漏了。即使这样也会遇到同样的问题。