DefaultHttpHandler 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
代表預設 HTTP 處理器的屬性與方法。
public ref class DefaultHttpHandler : System::Web::IHttpAsyncHandler
public class DefaultHttpHandler : System.Web.IHttpAsyncHandler
type DefaultHttpHandler = class
interface IHttpAsyncHandler
interface IHttpHandler
Public Class DefaultHttpHandler
Implements IHttpAsyncHandler
- 繼承
-
DefaultHttpHandler
- 實作
範例
以下程式碼範例示範如何從類別衍生 DefaultHttpHandler 出自訂的 HTTP 處理器。
public class AsyncDefaultHttpHandler : DefaultHttpHandler
{
private HttpContext _context;
public override IAsyncResult BeginProcessRequest(
HttpContext context, AsyncCallback callback, object state)
{
AsyncResultSample ar = new AsyncResultSample(callback, state);
_context = context;
return ar;
}
public override void EndProcessRequest(IAsyncResult result)
{
_context.Response.Write("EndProcessRequest called.");
}
// This method should not be called asynchronously.
public override void ProcessRequest(HttpContext context)
{
throw new InvalidOperationException(
"Asynchronous processing failed.");
}
// Enables pooling when set to true
public override bool IsReusable
{
get { return true; }
}
}
// Tracks state between the begin and end calls.
class AsyncResultSample : IAsyncResult
{
private AsyncCallback callback = null;
private Object asyncState;
private Boolean isCompleted;
internal AsyncResultSample(AsyncCallback cb, Object state)
{
this.callback = cb;
asyncState = state;
isCompleted = false;
}
public object AsyncState
{
get
{
return asyncState;
}
}
public bool CompletedSynchronously
{
get
{
return false;
}
}
public WaitHandle AsyncWaitHandle
{
get
{
throw new InvalidOperationException(
"ASP.NET should not use this property .");
}
}
public bool IsCompleted
{
get
{
return isCompleted;
}
}
internal void SetCompleted()
{
isCompleted = true;
if (callback != null)
{
callback(this);
}
}
}
Public Class defaulthttpexampleVB
Inherits DefaultHttpHandler
Private _context As HttpContext
Public Overrides Function BeginProcessRequest _
(ByVal context As HttpContext, _
ByVal callback As AsyncCallback, _
ByVal state As Object) As IAsyncResult
Dim ar As New AsyncResultSample(callback, state)
_context = context
Return (ar)
End Function
Public Overrides Sub EndProcessRequest(ByVal result As IAsyncResult)
_context.Response.Write("EndProcessRequest called.")
End Sub
' This method should not be called asynchronously.
Public Overrides Sub ProcessRequest(ByVal context As HttpContext)
Throw New InvalidOperationException _
("Asynchronous processing failed.")
End Sub
' Enables pooling when set to true
Public Overrides ReadOnly Property IsReusable() As Boolean
Get
Return True
End Get
End Property
End Class
' Tracks state between the begin and end calls.
Class AsyncResultSample
Implements IAsyncResult
Private callback As AsyncCallback = Nothing
Private _asyncState As Object
Private _isCompleted As Boolean
Friend Sub New(ByVal cb As AsyncCallback, ByVal state As Object)
Me.callback = cb
_asyncState = state
_isCompleted = False
End Sub
Public ReadOnly Property AsyncState() As Object _
Implements IAsyncResult.AsyncState
Get
Return _asyncState
End Get
End Property
Public ReadOnly Property CompletedSynchronously() _
As Boolean Implements IAsyncResult.CompletedSynchronously
Get
Return False
End Get
End Property
Public ReadOnly Property AsyncWaitHandle() _
As WaitHandle Implements IAsyncResult.AsyncWaitHandle
Get
Throw New InvalidOperationException _
("ASP.NET should not use this property .")
End Get
End Property
Public ReadOnly Property IsCompleted() _
As Boolean Implements IAsyncResult.IsCompleted
Get
Return IsCompleted
End Get
End Property
Friend Sub SetCompleted()
_isCompleted = True
If (callback <> Nothing) Then
callback(Me)
End If
End Sub
End Class
備註
當 DefaultHttpHandler 物件在 HTTP 管線中攔截了兩個請求攔截都已透過 Internet Information Services(IIS) 6.0 配置,且請求的擴充名沒有明確綁定時,會攔截 HTTP 管線中的來電請求。
請求攔截可透過 IIS 6.0 引入的通配碼應用程式映射功能設定。
該 DefaultHttpHandler 類別實作介面 IHttpAsyncHandler 以提供非同步請求處理。 關於 HTTP 處理器的一般資訊,請參閱 HTTP 處理器與 HTTP 模組概述。 此外,欲了解更多資訊,請參閱以下內容:
關於建立非同步 HTTP 處理器,請參見 「攻略:建立非同步 HTTP 處理器」。
關於註冊 HTTP 處理器,請參見 「如何註冊:註冊 HTTP 處理器」。
類別可以從該 DefaultHttpHandler 類別衍生,以提供客製化的請求處理。 從 DefaultHttpHandler 衍生出的非同步 HTTP 處理器可以覆寫該 BeginProcessRequest 方法,改變請求的處理方式。
DefaultHttpHandler 不使用 ASP.NET 錯誤。 現有使用 IIS 錯誤或專有 ISAPI 自訂錯誤機制的內容,則可保持不變。
建構函式
| 名稱 | Description |
|---|---|
| DefaultHttpHandler() |
初始化 DefaultHttpHandler 類別的新執行個體。 |
屬性
| 名稱 | Description |
|---|---|
| Context |
取得與當前 DefaultHttpHandler 物件相關的上下文。 |
| ExecuteUrlHeaders |
會收到一組請求標頭和請求值,隨著請求一起傳輸。 |
| IsReusable |
會獲得一個布林值,表示另一個請求可以使用該 DefaultHttpHandler 類別目前的實例。 |
方法
| 名稱 | Description |
|---|---|
| BeginProcessRequest(HttpContext, AsyncCallback, Object) |
會對 HTTP 處理器發起非同步呼叫。 |
| EndProcessRequest(IAsyncResult) |
提供非同步流程的終端方法。 |
| Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
| GetHashCode() |
做為預設哈希函式。 (繼承來源 Object) |
| GetType() |
取得目前實例的 Type。 (繼承來源 Object) |
| MemberwiseClone() |
建立目前 Object的淺層複本。 (繼承來源 Object) |
| OnExecuteUrlPreconditionFailure() |
當前提條件阻止 DefaultHttpHandler 物件處理請求時,會被呼叫。 |
| OverrideExecuteUrlPath() |
覆蓋目前請求的目標網址。 |
| ProcessRequest(HttpContext) |
使物件能 DefaultHttpHandler 處理 HTTP Web 請求。 |
| ToString() |
傳回表示目前 物件的字串。 (繼承來源 Object) |