如何在我的 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 类

Azure DB 连接字符串在 ASP.NET Core 应用中为空

如何在 ASP.NET 用户控件中指定 *.css 文件?

如何在 Asp.net c# 中为 GridView 行启用双击和单击