在ASP.NET Core中,当静态文件受到身份验证的保护时,往往会出现无法访问静态文件的问题,即使用户已通过身份验证也是如此。这是因为默认情况下,ASP.NET Core只允许授权用户访问受保护的路由。在处理静态文件时,ASp.NET Core仍会检查请求路径是否匹配授权路由,从而拒绝非授权用户访问静态文件。
解决这个问题的方法是在Startup.cs文件的Configure方法中添加以下代码:
app.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = context =>
{
if (context.Context.Response.StatusCode == 401 && context.File.Name.ToLower().EndsWith(".svg"))
{
context.Context.Response.StatusCode = 404;
}
}
});
这段代码将使用StaticFileOptions类的OnPrepareResponse方法来检查请求的状态代码和文件名,如果状态代码为401且文件名以“.svg”结尾,则将状态代码更改为404,这样非授权用户就没有办法访问该文件了。
注意:在修改代码时,应根据自己的需求修改静态文件的名称和文件类型。