0
有幾個文件處理程序我的網站使用,他們都有重複的代碼。在努力收拾我創建了一個共同的基類,他們都可以繼承:不明白爲什麼我的方法不被稱爲
Public MustInherit Class HandlerBase
Implements System.Web.IHttpHandler, System.Web.SessionState.IRequiresSessionState
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
Public Overridable Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
RequestHandler(context)
End Sub
Protected Overridable Sub RequestHandler(ByVal context As HttpContext)
Select Case context.Request.HttpMethod
Case "GET"
GetFile(context)
Case "POST"
UploadFile(context)
Case "DELETE"
DeleteFile(context)
Case Else
context.Response.ClearHeaders()
context.Response.StatusCode = 405
End Select
End Sub
Protected MustOverride Sub GetFile(ByVal context As HttpContext)
Protected MustOverride Sub UploadFile(ByVal context As HttpContext)
Protected MustOverride Sub DeleteFile(ByVal context As HttpContext)
end class
我處理的兩個繼承基類後完美地工作,但一個似乎並沒有在所有火。唯一的區別是,這個處理程序重寫RequestHandler:
Protected Overrides Sub RequestHandler(ByVal context As HttpContext)
Select Case context.Request.HttpMethod
Case "GET"
GetFile(context)
Case Else
context.Response.ClearHeaders()
context.Response.StatusCode = 405
End Select
End Sub
我訪問處理器和的ProcessRequest永遠不會在基地叫也不RequestHandler