2017-02-14 70 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