我可以将任意目录Map为wwwroot的子目录吗?也就是说,该目录在文件系统中不在wwwroot下,但在我的应用程序中,它会被视为wwwroot的子目录。
例如,我创建了一个ASP.NET6.0BlzorServer项目,程序dll路径位于/app/proj1/BlazorApp1.dll
,如果在/app/proj1/wwwroot/images/dog.jpg
有一个映像,它可以在我的页面中使用<img src="images/dog.jpg"/>
来呈现。但是如果我不想让这个images
目录实际位于文件系统上的wwwroot
目录下,该怎么办?是否可以将目录设置为/data/images
之类的其他位置,然后将该路径Map到wwwroot/images
,以便在应用中使用<img src="images/dog.jpg"/>
呈现/data/images/dog.jpg
?
2条答案
按热度按时间qzlgjiam1#
有3种方法可以做到这一点,我知道,首先调整设置,这是明确记录在msdn,在'服务文件以外的网站根'标题;
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-6.0#serve-files-outside-of-web-root
对于您的情况,由于您需要wwwroot和另一个文件,请参阅“从多个位置提供文件”;
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-6.0#serve-files-from-multiple-locations
另一种方法是使用MSBuild将文件从另一个目录复制到wwwroot文件夹中,例如参见下面的SO;
Copy files to output directory using csproj dotnetcore
最后,这是不是可移植的,你可以使用符号链接,见:
符号链接是指向另一个文件系统对象的文件系统对象。被指向的对象称为目标。
符号链接对用户是透明的;链接看起来像普通的文件或目录,并且可以由用户或应用程序以完全相同的方式对其进行操作。
https://learn.microsoft.com/en-us/windows/win32/fileio/symbolic-links
https://en.wikipedia.org/wiki/Symbolic_link
https://superuser.com/questions/1020821/how-can-i-create-a-symbolic-link-on-windows-10
第一个应该能满足你的需求。
5lhxktic2#
您可以尝试如下所示,使用复合文件提供程序更新默认提供程序:
结果: