首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET web.config 進階解析 (二):自訂錯誤與 HTTP 處理常式對應

     編輯:關於ASP.NET

子元素

在 `` 下可加入多個 `` 子元素,依 HTTP 狀態碼導向不同自訂錯誤頁面。需將 `mode="On"` 才生效。

<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
  <error statusCode="403" redirect="403.htm" />
  <error statusCode="404" redirect="404.htm" />
</customErrors>

使用者存取不存在頁面 → 404.htm;無權限存取 → 403.htm。可在錯誤頁提供友善提示與導航連結。

區段詳細說明

`` 依請求 URL 路徑與 HTTP Verb (GET/POST 等) 將要求導向對應的 `IHttpHandler` 實作。可在任何層級的 web.config 設定,實現目錄級別的處理邏輯覆寫。

Machine.config 內建對應表 (節錄)

<httpHandlers>
  <add path="*.rules" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
  <add path="*.xoml" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel..." validate="false"/>
  <add path="trace.axd" verb="*" type="System.Web.Handlers.TraceHandler" validate="true"/>
  <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="true"/>
  <add path="*.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="true"/>
  <add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="true"/>
  <add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="true"/>
  <add path="*.asmx" verb="*" type="System.Web.Services.Protocols.WebServiceHandlerFactory, System.Web.Services..." validate="false"/>
  <add path="*.rem" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting..." validate="false"/>
  <add path="*.soap" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting..." validate="false"/>
  <add path="*.asax" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
  <add path="*.ascx" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
  <add path="*.master" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
  <add path="*.skin" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
  <add path="*.browser" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
  <add path="*.sitemap" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
  <add path="*.config" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
  <add path="*.cs" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
  <add path="*.vb" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
  <add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="true"/>
  <add path="*" verb="*" type="System.Web.HttpMethodNotAllowedHandler" validate="true"/>
</httpHandlers>

關鍵屬性說明

  • path:URL 路徑模式,支援萬用字元 `*`。
  • verb:HTTP 動詞,`*` 表所有,或指定 `GET,POST` 等。
  • type:完整類別名稱 (含組件強名稱),實作 `IHttpHandler` 或 `IHttpHandlerFactory`。
  • validate:`true` 表示啟動時驗證類別存在,`false` 延遲載入 (適用 WCF 等延遲載入場景)。

常見應用場景

  • 自訂副檔名處理:如 `.pdf` 由自訂 Handler 產生動態報表。
  • 封鎖敏感檔案:將 `*.config`、`*.cs` 等對應至 `HttpForbiddenHandler` 防止直接下載。
  • RESTful API 路由:搭配 `HttpHandlerFactory` 依 URL 規則分派至不同處理邏輯。

注意事項

  1. IIS 7+ 整合管線模式下,Handler 註冊需改在 `` 區段。
  2. 順序很重要:ASP.NET 由上至下比對,第一個符合者生效。
  3. 避免過度使用 `path="*"` 捕獲所有請求,除非為預設處理器。

總結

善用 `` 提供友善錯誤體驗,透過 `` 精確控制請求分派,是 ASP.NET 應用程式架構彈性與安全性的關鍵配置。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved