ASP.NETCore项目目录外服务文件IActionResultIndex(){returnFile("c:/path/to/index.html","text/html");这会导致错误:FileNotFoundException:Couldnotfindfile:c:/path/to/index.html将ErrorMessage的路径粘贴到我的浏览器中,我可以打开文件,所以文件显然在那里。我能够提供该文件的唯一方法是将它放在项目文件夹的wwwroot中并像这样提供它:publicIActionResultIndex(){returnFile("index.html","text/html");我使用app.UseStaticFiles(options)更改了我提供静态文件的文件夹,所以我认为控制器会使用该文件夹作为默认文件夹,但它一直在寻找wwwroot。我如何从Controller提供位于wwwroot之外,甚至项目之外的文件?您需要使用PhysicalFileProvider类,它是IFileProvider的一个实现来访问实际系统的文件。从文档中的文件提供程序部分:PhysicalFileProvider提供对物理文件系统的访问。它包装System.IO.File类型(对于物理提供者),确定目录及其子目录的所有路径。此范围限制对目录及其子目录的访问,防止访问此边界之外的文件系统。实例化此提供者时,必须为其提供一个目录路径,作为向此提供者发出的所有请求的基本路径(并限制在此路径之外的访问)。在ASP.NETCore应用程序中,您可以直接实例化PhysicalFileProvider提供者,或者通过依赖注入在Controller或服务的构造函数中请求IFileProvider。PhysicalFileProvider实例的创建和使用示例:以上为C#学习教程:ASP.NETCore为项目目录外的文件提供服务,希望大家多多关注——IFileProviderprovider=newPhysicalFileProvider(applicationRoot);IDirectoryContents内容=provider.GetDirectoryContents("");//applicationRoot内容IFileInfofileInfo=provider.GetFileInfo("wwwroot/js/site.js");//applicationRoot下的一个文件本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
