如何使用HTTP subStatus在Classic ASP中发送HTTP错误代码?

时间:2017-02-14 01:50:40

标签: asp-classic http-headers http-status-codes

在Classic ASP中,我知道可以通过指定 .Status 属性来返回 HTTP错误标题,如下所示:

Response.Status = "404 File Not Found"

但是如何使用子状态返回更具体的错误代码,例如404.9或500.100?

我需要这样做以进行测试(因为我知道subStatus代码通常是由服务器动态添加的)

2 个答案:

答案 0 :(得分:0)

IIS不会在流量日志中记录自定义子代码。

不要测试子代码。测试自定义错误返回的statusText属性。

答案 1 :(得分:0)

所以:似乎只能从Classic ASP代码生成“三位数”HTTP错误。

因此,测试自定义网页是否有效的唯一方法是调用网站上的“test.yyy”文件

由于文件扩展名.yyy不是IIS MimeMap的一部分,静态文件处理程序将不会提供它,然后返回404.3错误。这样,我可以测试我的自定义错误页面。 此示例来自此Microsoft文章:https://www.iis.net/learn/troubleshoot/diagnosing-http-errors/how-to-use-http-detailed-errors-in-iis

因此,对于每个需要设置非常详细的错误消息(包括IIS 7/8下的HTTP子代码)的人来说,这里是您网站的“web.config”文件内容:(此文件只包含几个条目,但您显然可以为所需的每个HTTP代码/子代码组合添加条目.Microsoft在C:\ inetpub \ custerr中提供56个错误页面

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpErrors errorMode="Custom">
            <remove statusCode="404" subStatusCode="-1" />
            <error statusCode="404" subStatusCode="5" prefixLanguageFilePath="" path="E:\inetpub\vhosts\yourdomain.com\error_docs\404-5.html" />
            <error statusCode="404" subStatusCode="4" prefixLanguageFilePath="" path="E:\inetpub\vhosts\yourdomain.com\error_docs\404-4.html" />
            <error statusCode="404" subStatusCode="3" prefixLanguageFilePath="" path="E:\inetpub\vhosts\yourdomain.com\error_docs\404-3.html" />
            <error statusCode="404" subStatusCode="2" prefixLanguageFilePath="" path="E:\inetpub\vhosts\yourdomain.com\error_docs\404-2.html" />
            <error statusCode="404" subStatusCode="1" prefixLanguageFilePath="" path="E:\inetpub\vhosts\yourdomain.com\error_docs\404-1.html" />
            <error statusCode="404" subStatusCode="0" prefixLanguageFilePath="" path="E:\inetpub\vhosts\yourdomain.com\error_docs\404-0.html" />
        </httpErrors>
    </system.webServer>
</configuration>

我希望它会有所帮助! :)