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

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

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

\content\data\MyDataFile.txt

要求:

>我想能够指定我的路径,例如:

        <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#库的配置,所以我不真的想要传递层之间的配置信息,如果可能的话.

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

最佳答案
你可以使用Path.Combine来组合AppDomain.CurrentDomain.BaseDirectory和你的相对路径.

这将给出一个相对于ASP.NET应用程序中的ASP.NET根目录(〜/)的路径,或者相对于包含WinForms或Console应用程序中可执行文件的目录的路径.

转载注明原文:指定web.config中的相对文件位置,以供标准C#类库使用 - 代码日志