我正在尝试从我的ASP.NET Core应用程序的wwwroot文件夹内的images文件夹中提供文件,在Startup
该类中我已经启用了静态文件访问。
该HostingEnvironment
服务为我提供了一个WebRootPath
属性,该属性为我提供了wwwroot文件夹的绝对路径,但是使用此路径在浏览器的控制台中给我一个“不允许加载本地资源”错误。
如果我使用localhost
+相对路径从浏览器访问文件,则可以获取图像文件,因此没有授权问题。
现在我需要做的就是能够将绝对路径转换为与我的Web服务器相对的路径。
鉴于您遇到的错误,在我看来,您试图_env.WebRootPath + "/images/textfile.txt"
在视图中使用它,例如用作href属性。
file:///C:/Users/PathToYourSite/wwwroot/images/textfile.txt
最终导致您遇到的错误。您可以在此答案中了解更多有关此内容的信息,但在现代Chrome之类的浏览器中,默认情况下会禁用从http协议到文件协议的请求。因此,IHostingEnvironment
当您希望将文件的内容作为服务器端逻辑的一部分读取时,应使用该方法,以便您可以对它们进行处理。
但是,如果您需要在wwwroot中生成文件链接并在视图中使用它们,则有两种选择:
使用将IUrlHelper
公共URL解析为wwwroot内的文件,即"~/"
wwwroot文件夹。然后在需要时使用它,例如href:
@Url.Content("~/images/textfile.txt")
在带有href属性(以开头)的剃刀视图中直接创建锚点"~/"
。(您甚至可以在此处获得智能感知)
<a href="~/images/textfile.txt">Get file from wwwroot</a>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句