1

我是系统管理员,我希望只有一个地方可以更改/检查所有 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 文件。

4

1 回答 1

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
于 2015-01-16T15:32:43.733 回答