2014-12-04 204 views
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

回答

0

發現這是檢查在提琴手的請求後,小錯字:

Protected Overrides Sub DeleteFile(ByVal context As HttpContext 
    Throw New NotImplementedException() 
End Sub 

缺少參數的右括號。虐待投票結束這一點。

相關問題