2011-08-03 39 views
1

將這段代碼拋出一個異常:實現IHttpHandlerFactory時GetHandler是否可以返回null?

public class MyHttpHandlerFactory : IHttpHandlerFactory 
{ 
    public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated) 
    { 
     if (...) 
      return null; 

      ... 

     return new MyHttpHandler(); 
    } 
} 
+0

在Visual Studio中點擊「F5」以查明。 – RPM1984

+0

我會改述一下:他們在做這件事時的運行時間限制? MSDN中的文檔沒有提到這種情況。在我們的應用程序中,此代碼會導致行爲不穩 –

回答

1

如果你看看這個article on MSDN,你會看到他們的例子,他們返回null從GetHandler。但是,如果請求不是GET或POST,它們只會返回null,根據它們在web.config中設置工廠的方式,該請求不會發生。

我使用ASP.NET 4.0/IIS 7.5/Integrated Pipeline的文章中的代碼設置了一個快速示例,如果您確實從GetHandler調用中返回null,那麼所有看上去發生的事情都是空的200/OK響應從服務器返回(我使用Fiddler檢查)。所以看起來ASP.NET 4.0(至少)會優雅地處理這種情況。按照問題回答問題,不,它沒有出現運行時限制返回null。然而,在實踐中,您可能想要限制HandlerFactory正在接收的請求,以便它永不返回null,或者至少考慮應用程序的其他部分如何響應對此處理程序工廠的請求,從而返回空的200/OK響應。

相關問題