相对路径 - Visual Studio - C#

Relative Path - Visual Studio - C#

在 App.config 中,我在解决方案文件夹下为我的文件提供了这个相对路径。我在 Web 应用程序中使用此相对路径。

value="..\filename.log"/> 

& 也试过

value="~/filename.log"/> 

但是没有用,然后我调试了代码,才知道它正在尝试在此路径中查找文件

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE..

解决方案

确保 ~ 不适用于网络应用程序时的相对路径。因此,如果您想在 Web 应用程序中提供相对路径,请使用以下代码。

string logFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ConfigurationManager.AppSettings["LogFile"]);

这里"LogFile"是键值"filename.log"

如果你需要找到一个与执行代码相关的文件夹,你可以使用类似

的东西
var location = System.Reflection.Assembly.GetExecutingAssembly().Location;

...获取执行代码的当前位置。然后您可以通过以下方式获取文件夹:

var directory = System.IO.Path.GetDirectoryName(location);

您可以使用 Path.Combine:

添加相对路径
var location = System.Reflection.Assembly.GetExecutingAssembly().Location;
var directory = System.IO.Path.GetDirectoryName(location);
var path = System.IO.Path.Combine(directory, "..\filename.log");

...这将产生一个绝对路径。

在你的配置文件中使用~/访问目录

value="~/filename.log"/>

您可以使用 System.Environment.CurrentDirectorySystem.IO.Directory.GetCurrentDirectory() 获取当前解决方案目录(工作目录)。因此,您可以直接在代码中使用它来访问该日志文件。

String path = System.IO.Directory.GetCurrentDirectory()+"/filename.log";