在web.config或global.asa中设置变量以指向服务器环境变量

时间:2015-01-16 15:14:16

标签: vbscript web-config environment-variables global.asa

我是系统管理员,我想在所有web.config或global.asa文件中只有一个地方可以更改/检查NAS路径,这样,每当路径发生变化时,我都会这样做不必进入所有web.config或global.asa文件进行必要的更改,并希望避免任何错误或遗忘的文件......

我的想法是在本地服务器上创建一个可以设置和更新的环境变量。

<!-- metadata type="typelib" file="C:\Program Files\Common Files\System\ADO\msado15.dll" -->
<script language="vbscript" runat="server">

Sub Application_OnStart

dim strNAS
    strNAS = ${MyEnvironmentVar} ???
Application("NAS") =  strNAS

End Sub


' Instead of using an hard-coded path like below
'Application("News")="File Name=\\NAS04.MyDomain.com\mydata$\myfile.udl"
'I'd like to use a more flexible way...

Application("News")="File Name=" + Application("NAS") + "mydata$\myfile.udl"
or 
Application("News")="File Name=" + ${MyEnvironmentVar} + "mydata$\myfile.udl"

...

</script>

$MyEnvironmentVar是在本地服务器上设置为环境变量的变量,并具有当前存储系统的路径...

MyEnvironmentVar = "\\NAS04.myDomain.com\" 

我在网上看到类似Environment.getenvironmentvariable()的内容,但我不确定如何使用它,以及它是否适用于web.config和global.asa文件。

1 个答案:

答案 0 :(得分:2)

在Global.asa文件中,您可以尝试以下代码:

Set objWSH = CreateObject("WScript.Shell")
Set objUserVariables = objWSH.Environment("USER") 
path = objUserVariables("NAS") ' here NAS is name environment variable stored in User variables

如果NAS存储在系统变量中,则相应地更改第二行。

如果你想在这里使用web.config方法,那就是。但是在经典ASP中,web.config只是另一个XML文件。 您的web.config如下所示:

<configuration>
  <appSettings>
     <add key="NAS" value="your path goes here" />
  </appSettings>
</configuration>

VBScript代码如下:

set xmlDoc = server.CreateObject("Microsoft.XMLDOM")
set xmlappSettings = server.CreateObject("Microsoft.XMLDOM")
set xmladd = server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(server.MapPath("web.config"))
set xmlappSettings = xmldoc.GetElementsByTagName("appSettings").Item(0) 
set xmladd = xmlappSettings.GetElementsByTagName("add")
for each addItem in xmladd 
  if addItem.getAttribute("key") = "NAS" then
    myVar = addItem.getAttribute("value")
  end if
next