Asp.net core .NET核心在wwwroot之外提供HTML文件,可以';无法加载JS文件

Asp.net core .NET核心在wwwroot之外提供HTML文件,可以';无法加载JS文件,asp.net-core,asp.net-core-mvc,angular-cli,Asp.net Core,Asp.net Core Mvc,Angular Cli,我正在尝试不同的方法来保护带有.NET核心授权的Angular CLI应用程序 为了使其尽可能安全,我希望避免所有Angular CLI输出文件公开,并将它们保留在CLI预配置的默认“dist”文件夹中 我可以通过返回PhysicalFileResult从授权控制器加载index.html public IActionResult Index() { return PhysicalFile(Path.Combine(Directory.GetCurrentDirectory(), "di

我正在尝试不同的方法来保护带有.NET核心授权的Angular CLI应用程序

为了使其尽可能安全,我希望避免所有Angular CLI输出文件公开,并将它们保留在CLI预配置的默认“dist”文件夹中

我可以通过返回PhysicalFileResult从授权控制器加载index.html

public IActionResult Index()
{
    return PhysicalFile(Path.Combine(Directory.GetCurrentDirectory(), "dist", "index.html"),"text/HTML");
}
但是当页面加载时,我在所有bundle.js文件上都得到了404


是否可以在不涉及静态文件中间件或公开文件的情况下(最好不必手动更改index.html中每个捆绑js文件的src)以这种方式为应用程序提供服务?

从asp.net核心文档中查看本文(摘录如下所示):



只需将授权中间件放在静态中间件之前

//必须是第一个,以便在调用静态中间件之前对用户进行身份验证
app.UseIdentity();
应用程序使用(异步(上下文,下一步)=>
{
//对于以“app”开头的路径,请检查用户是否已登录
if(context.Request.Path.StartsWith(“app”)&&httpContext.User==null)
{
//返回“未经授权”
context.Response.StatusCode=401;
返回;
}
//如果用户已登录,请调用下一个中间件
等待next.Invoke();
});
app.UseStaticFiles();

我读到了,这促使我学习使用PhysicalFile(),它返回PhysicalFileResult。它可以工作,我可以从文件系统的任何地方提供index.html文件,但是html文件不能加载同一目录中的javascript文件。我觉得应该有一种方法可以从控制器操作中为整个目录提供服务。