如何在我的 ASP.NET 应用程序中为文件定义正确的路径
Posted
技术标签:
【中文标题】如何在我的 ASP.NET 应用程序中为文件定义正确的路径【英文标题】:How to define correct path for file in my ASP.NET application 【发布时间】:2022-01-19 09:10:46 【问题描述】:我正在尝试使用以下逻辑将文件保存到 D:\folder1\folder2\file.txt
:
public void ChangeBackground(ChangeBackgroundDto dto)
var dir = Directory.GetCurrentDirectory();
File.WriteAllBytes("../../Images/Custom/BackgroundHome.png", dto.BGFileFormat);
但是,当我这样做时,我最近遇到了一个异常,因为我的根目录位于 C:\programfiles(x86)\llsExpress
。
异常信息为:Could not find a part of the path 'C:\\Images\\Custom\\BackgroundHome.png'.
即使我部署应用程序,什么路径也适用?
【问题讨论】:
试试这样的:string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\FileName.png"; 旁注,大多数时候相对路径比绝对路径更合理。 您的文件夹必须存在,然后才能写入。我会在应用程序中创建一个新文件夹并写入它。为了将来参考,不要将错误和代码作为图像发布,而是将它们粘贴到您的问题中 - 使其更易于阅读,并为未来的人们提供发现相同问题的能力。 顺便说一句,在我看来,能够在您网站的根文件夹之外写入始终是一个潜在的安全风险。 @Adrian 我的文件夹确实已经存在。好的,这是我的第一个问题,我会的) 【参考方案1】:首先,如果可能,我建议您尝试将文件存储在根文件夹中的相对路径中。这有助于提高安全性,而且您会知道您网站的所有文件都在根文件夹中。
如果您确实想将文件存储在不同的驱动器上,则不能使用相对路径来执行此操作。所以你的路径中没有..
。您必须使用绝对路径。将其存储在配置或环境变量中,以避免硬编码配置文件路径。
最后请使用代码块来显示代码,而不是 *** 上的屏幕截图。
您可以通过将代码作为文本放在这些字符之间来做到这一点 ``。 like this
【讨论】:
以上是关于如何在我的 ASP.NET 应用程序中为文件定义正确的路径的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET MVC 3 razor ViewStart 文件中指定不同的布局?
如何在 asp.net core 3.1 中为每种类型的请求启用 Cors
如何在 Spring Boot 应用程序中为码头服务器自定义带有自定义正文内容的 ErrorHandler 类