2017-02-14 34 views
2

在传统的ASP,我知道这是可能通过指定.STATUS财产,这样返回一个HTTP错误头如何使用HTTP子状态在传统ASP中发送HTTP错误代码?

Response.Status = "404 File Not Found" 

但我怎么能返回更具体的错误代码与一个子状态,例如404.9或500.100?

我需要做的是用于测试目的(因为我知道,状态代码通常是通过动态的服务器添加)

+0

你试过Response.Status =“404.9隐藏文件属性”吗? – Lankymart

+0

根据[文档](https://msdn.microsoft.com/en-us/library/ms525844(v = vs.90).aspx)判断,它只需要一个*“三位数字,表示状态代码“*,但我的建议是试试看。 – Lankymart

+0

@Lankymart,是的,我已经测试过,但似乎没有工作。 “生成”错误的唯一方法是尝试调用位于网站上的“test.yyy”文件。由于文件扩展名.yyy不是IIS MimeMap的一部分,因此静态文件处理程序将无法处理它,然后返回404.3错误。这样,我可以测试我的自定义错误页面。 – AlexLaforge

回答

0

因此:它似乎只能从传统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> 

我希望它会有帮助! :)

0

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

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

+0

IIS会记录子代码(您只需点击“IIS> ASP> Logging”图标以将该字段包含到日志文件中 如果您的服务器命中“500.0”,您将在结束时看到500 0 如果你的服务器命中“500.19”,你会在行尾附近看到50019. – AlexLaforge

+0

我配置了一个测试页面来返回一个“404.19错误的Droids”,并在我的日志中看到了“404 0”。我的答案的基础,我的回答也是基于我相信你正在测试 - 使用某种ServerXMLHTTP组件或AJAX请求 –

+0

好吧,我更好地理解你的答案!你对我测试的方式做出了“假设”它......那......呃......不是确切的;)我测试过的方式与你做的一样:使用一个简单的.asp测试页。而你的日志显示404的事实。0显示IIS删除了由ASP代码发送的子代码,从而确认了Classic ASP只能生成3位错误的事实。谢谢 ! ;) – AlexLaforge