Lem*_*ich 26 .net c# iis web-services environment-variables
Environment.GetEnvironmentVariable("variableName")如果从IIS上托管的webMethod中进行调用,为什么不能获得变量值?如果我从同一台机器上的控制台应用程序调用它,它将起作用?
我在哪里设置这些变量以使IIS Web服务可见?我应该使用第二个参数Environment.GetEnvironmentVariable(name, target)来获取它吗?
它实际上非常简单:
[WebMethod(Description = "Gets the environment variable value.")]
public string GetEnvironmentVariable()
{
return Environment.GetEnvironmentVariable("VARIABLE_NAME_HERE");
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,VARIABLE_NAME_HERE设置在系统和用户级别.
Bra*_*ber 30
重新启动Visual Studio为我修复了它(猜测IIS Express也会缓存这些值).
Pat*_*ina 29
我遇到了同样的问题,感谢@sergserg我提出了这个问题并且它有效:
var value = Environment.GetEnvironmentVariable(key, EnvironmentVariableTarget.User)
Run Code Online (Sandbox Code Playgroud)
重要的是使用 EnvironmentVariableTarget.User
ser*_*erg 14
阅读此处了解更多信息:
特别:
什么是系统环境变量?
环境变量是保存有关系统中整个环境的信息的字符串.这些字符串值是动态的,它们可能会影响系统的行为方式.环境变量可以分为两种主要类型:
系统变量:无论当前用户是什么,它们都会影响整个系统.它们由Windows定义并保存在注册表中.您需要是管理员才能修改它们.您通常需要重新启动计算机才能使这些更改生效.
用户变量:它们会影响当前系统用户的当前环境.它们可以被任何系统用户删除,修改和添加.它们由Windows安装程序,某些程序和用户使用.对这些变量的更改将保存到注册表中并立即生效.
如果您尝试调用计算机上不存在的环境变量,则会出现问题.您必须尝试查找本地计算机上存在的变量,但不能在Web服务的主机上查找.