在web.config中指定相关文件位置以供标准C#类库使用

Tim*_*don 18 c# asp.net

我正在努力寻找一种在web.configappSettings 中指定文件位置的方法,该方法避免使用硬编码路径,但允许非"网络感知"C#库查找文件.

C#库使用标准File.Open,File.Exists方法等对数据文件进行操作,该数据文件存储在我的Web应用程序(ASP.NET MVC)树中,例如:

\content\data\MyDataFile.txt
Run Code Online (Sandbox Code Playgroud)

要求:

  • 我希望能够指定我的路径,例如:
        <appSettings>
this-->     <add key="MyFileLocation" value="~\content\data\MyDataFile.txt" />
not -->     <add key="MyFileLocation" value="c:\inetpub\wwwroot\foo\content\data\MyDataFile.txt" />
        </appSettings>
  • 我不希望C#库知道它正在使用的Web应用程序,因为它在其他软件中使用,并且Web应用程序不需要知道C#库的配置,所以我真的不知道想要尽可能在层之间传递配置信息.

关于如何干净利落地做任何建议?谢谢!

Joe*_*Joe 30

您可以使用Path.Combine组合AppDomain.CurrentDomain.BaseDirectory和您的相对路径.

这将为您提供相对于ASP.NET应用程序中的ASP.NET根目录(〜/)的路径,或相对于WinForms或控制台应用程序中包含可执行文件的目录的路径.