ASP.NET MVC - 如何处理Windows环境变量?

时间:2010-02-23 13:30:01

标签: asp.net-mvc environment-variables

此问题也与我的其他问题ASP.NET MVC - Website Paths有关。

我有一个第三方组件,其中包含编译到程序集中的硬编码目录路径。其中一条路径的示例是:

%APPDATA%\Vendor\Product\settings.ini

因此,如果我创建一个控制台应用程序/ Windows服务并在我的计算机上的帐户下运行它(在Windows Server 2003下)并保存这些设置,则保存它们以说出此目录:

C:\Documents and Settings\James\Application Data\Vendor\Product\settings.ini

但是,如果我尝试通过我的网络应用程序做同样的事情,它不会。

我试图找出在ASP.NET MVC Web应用程序中使用时%APPDATA%环境变量映射到的位置。我已经尝试将Vendor\Product\目录放在我的App_Data目录中,正如另一个问题中的某人所建议的......这不起作用。

我想也许保存会失败,但是,没有例外被抛出,就像通常那样处理线。

2 个答案:

答案 0 :(得分:1)

我假设它将使用运行ASP.Net或AppPool的服务的环境变量设置。

在使用组件之前,您是否尝试在应用程序启动时设置环境变量?

答案 1 :(得分:0)

FiguringOutAEnvironmentVariableContent

詹姆斯,

Noldorin不久前发表了一篇不错的SOLUTION

引用作者......

  
    

要获取AppData目录,最好使用GetFolderPath方法:

  
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
  
    

%AppData%是一个环境变量,它们不会在.NET中的任何位置自动扩展,尽管您可以显式使用Environment.ExpandEnvironmentVariable方法来执行此操作。我仍然强烈建议您使用GetFolderPath,因为正如JohannesRössel在评论中指出的那样,在某些情况下可能不会设置%AppData%。

         

最后,要创建示例中显示的路径:

  
var fileName = Path.Combine(Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData), "DateLinks.xml")

希望它对你有所帮助。

奖励: <%= System.Environment.GetEnvironmentVariable("MyVariable") %>

相关问题