如何使用HTTP子状态在传统ASP中发送HTTP错误代码?
在传统的ASP,我知道这是可能通过指定.STATUS财产,这样返回一个HTTP错误头:如何使用HTTP子状态在传统ASP中发送HTTP错误代码?
Response.Status = "404 File Not Found"
但我怎么能返回更具体的错误代码与一个子状态,例如404.9或500.100?
我需要做的是用于测试目的(因为我知道,状态代码通常是通过动态的服务器添加)
因此:它似乎只能从传统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代码/子码组合添加条目微软提供了56个错误页面,在C:\的Inetpub \ custerr)
<?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>
我希望它会有帮助! :)
IIS不会在流量日志记录自定义子码。
不要测试子代码。测试自定义错误返回的statusText属性。
IIS会记录子代码(您只需点击“IIS> ASP> Logging”图标以将该字段包含到日志文件中 如果您的服务器命中“500.0”,您将在结束时看到500 0 如果你的服务器命中“500.19”,你会在行尾附近看到50019. – AlexLaforge
我配置了一个测试页面来返回一个“404.19错误的Droids”,并在我的日志中看到了“404 0”。我的答案的基础,我的回答也是基于我相信你正在测试 - 使用某种ServerXMLHTTP组件或AJAX请求 –
好吧,我更好地理解你的答案!你对我测试的方式做出了“假设”它......那......呃......不是确切的;)我测试过的方式与你做的一样:使用一个简单的.asp测试页。而你的日志显示404的事实。0显示IIS删除了由ASP代码发送的子代码,从而确认了Classic ASP只能生成3位错误的事实。谢谢 ! ;) – AlexLaforge
你试过Response.Status =“404.9隐藏文件属性”吗? – Lankymart
根据[文档](https://msdn.microsoft.com/en-us/library/ms525844(v = vs.90).aspx)判断,它只需要一个*“三位数字,表示状态代码“*,但我的建议是试试看。 – Lankymart
@Lankymart,是的,我已经测试过,但似乎没有工作。 “生成”错误的唯一方法是尝试调用位于网站上的“test.yyy”文件。由于文件扩展名.yyy不是IIS MimeMap的一部分,因此静态文件处理程序将无法处理它,然后返回404.3错误。这样,我可以测试我的自定义错误页面。 – AlexLaforge