ASP

作者:Walter Oliver

经典 ASP 包含在 IIS 7.0 及更高版本中,可用于共享托管方案。 但是,计划这样做的主机托管服务提供商应考虑以下建议:

  1. 关闭 ASP 模板缓存. 因为 ASP 磁盘模板缓存不支持共享托管,应该禁用。 这应该不会造成问题,因为在将任何内容写入磁盘之前,每个工作进程最多会在内存中缓存 500 个 ASP 页面。
  2. 委派 scriptErrorSentToBrowser 设置。 IIS 团队在 IIS 7.0 及更高版本中进一步加强了经典 ASP 的安全性。 例如,scriptErrorSentToBrowser 属性设置为 false。 这意味着用户浏览器不会显示任何脚本错误。 但在托管环境中,这可能是个问题。 几乎没有其他方法可以排查经典 ASP 的错误。 请注意,不建议委派 applicationhost.config 中的 <asp> 部分,因为主机托管服务提供商可能不希望委派某些设置,如模板缓存的位置和 runOnEndAnonymously 设置。 下面的指南说明如何委派 scriptErrorSentToBrowser 设置,而是不委派整个 <asp> 部分。

关闭 ASP 模板缓存:

打开命令提示符并运行以下命令:

%windir%\system32\inetsrv\appcmd set config -section:asp -cache.maxDiskTemplateCacheFiles:0

委派 scriptErrorSentToBrowser 设置:

  1. 允许通过 overrideModeDefault 委派 applicationhost.config 中的 <asp> 部分,方法是使用文本编辑器打开 %windir%\system32\inetsrv\config\applicationhost.config 并更改 <section name="asp" overrideModeDefault="Deny" /> 元素,如下所示:

    <section name="asp" overrideModeDefault="Allow" />
    
  2. 使用 lockAllAttributesExcept 和 lockElements 仅允许委派 scriptErrorSentToBrowser 设置,方法是找到 <asp> 元素并进行更改,如下所示:

    <asp lockAllAttributesExcept="scriptErrorSentToBrowser" lockElements="limits,cache" />
    
  3. 现在你作为主机托管服务提供商,可使用 appcmd 将 scriptErrorSentToBrowser 设置为 true(请参阅以下示例)

    %windir%\system32\inetsrv\appcmd set config "Default Web Site" -section:asp -scriptErrorSentToBrowser:true
    

    或者,你可以要求客户在其 web.config 文件中输入以下语句:

    <system.webServer>
       <asp scriptErrorSentToBrowser="true"/>
    </system.webServer>
    

资源

有关详细信息,请参阅: