C# 2008 SP1

我正在使用下面的代码:

dt.ReadXml("%AppData%\\DateLinks.xml");

然而,我得到一个异常,指向我的应用程序正在运行的位置:

找不到路径的一部分 D: \ SubVersionProjects \ CatDialer \ bin \ \项目调试\ % AppData % \ DateLinks.xml”。

我认为%AppData%应该找到相对路径。当我开始|运行|%AppData% windows资源管理器带我到那个目录。

我不能输入完整的路径,因为每个客户端机器上的用户是不同的。


当前回答

ASP。NET,加载用户配置文件设置需要在应用程序池上设置,但这还不够。在\Windows\System32\inetsrv\Config\applicationHost中有一个名为setProfileEnvironment的隐藏设置。Config,由于某些原因默认情况下是关闭的,而不是文档中描述的打开。您可以更改默认值或在应用程序池中设置它。然后,Environment类上的所有方法都将返回正确的值。

其他回答

你也可以使用

Environment.ExpandEnvironmentVariables("%AppData%\\DateLinks.xml");

展开%AppData%变量。

如果你说的是ASP.NET,路径是不同的。

我找不到任何指向ASP.NET /App_Data的“SpecialFolder”值。

相反,你需要这样做:

 HttpContext.Current.ApplicationInstance.Server.MapPath("~/App_Data")  

(注意:在MVC控制器中你不需要'Current'属性)

如果还有其他更“抽象”的方法来获得App_Data,我很乐意听到是怎么做的。

这是为我工作在控制台应用程序-

string appData = System.Environment.GetEnvironmentVariable("APPDATA");

在。net2.0中,可以使用变量Application。UserAppDataPath

我认为把%AppData%放在这样的字符串中是行不通的。

try

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).ToString()