【问题标题】:Reading web.config values in Classic ASP在经典 ASP 中读取 web.config 值
【发布时间】:2011-08-31 10:31:17
【问题描述】:

我继承了一个需要支持的传统经典 asp 站点,并且正在设置开发/调试环境,因此我不必在生产服务器上工作。

代码有点乱,实际上有数百个连接字符串散布在各种 .asp 文件中。这些都包含对 SQL 服务器的硬编码引用等。

我真的不想用我的本地开发环境 SQL DB 设置替换所有这些,所以我想知道是否有一种简单的方法可以让经典的 asp 从 .net web.config 文件中读取。这样我就可以将所有硬编码的连接字符串更改为从这个地方读取,然后我只需要在一个地方定义服务器详细信息。

这意味着我可以在本地编写代码和调试,我所要做的就是在部署之前更改 web.config 中的几个值。

请在您的回答中提供明确的示例,因为我是经典 asp 的新手,并且在这个阶段我真的不喜欢它。迫不及待地想在 .net 中重新开发它;)

谢谢

【问题讨论】:

    标签: asp-classic web-config


    【解决方案1】:

    在经典 ASP 中执行此操作的通常位置是 global.asa 文件中的应用程序变量:

    SUB Application_OnStart
        application("connectionstring")= "[your connectionstring]"
    END SUB
    

    然后您可以在每个页面上使用application("connectionstring"),而不必在页面上包含包含。

    【讨论】:

    • +1 简洁的代码,易于使用。参考this页面了解更多关于global.asa文件
    • 以前从没想过.. :-o(2017 年这样做的好方法);)
    【解决方案2】:

    只需使用服务器端包含您需要的所有应用设置。实施起来会比阅读 web.config 更容易(也更快),并为您提供同样的灵活性。

    config.asp

    <%
    Dim connectionString
    connectionString = "your connectionstring here"
    %>
    

    Default.asp

    <% Option Explicit %>
    <!-- #include virtual="config.asp" -->
    <%
    '---
    ' ... use connectionString here
    '---
    %>
    

    根据您的说法,您也可以在其他地方使用 SSI 来改善您的其他遗产。

    【讨论】:

    • 谢谢,是的,我可以做很多工作来改进它,但就我而言,它是死代码。我想尽可能少地使用它并从头开始重新开发它:)
    • @bob:但使用文件扩展名 .asp 而不是 .inc。如果 IIS 服务器有一个 .* 映射,您可能会意外地让外部机器下载 /config.inc。如果连接字符串可以包含用户名和密码,那么您不希望允许外部访问。
    • @Anthony 也许为专用的应用程序池用户使用集成安全性也是一个好主意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多