次の宣言Web.config
を含むファイルを考えてみましょう。httpHandlers
<httpHandlers>
<add verb="*" path="*" type="MyWebApp.TotalHandlerFactory"/>
</httpHandlers>
つまり、このハンドラー ファクトリは、すべての着信要求を「確認」して、それらを処理する機会を得たいと考えています。ただし、必ずしもすべてを実際に処理する必要はなく、特定の実行時の条件を満たすものだけを処理する必要があります。
public sealed class TotalHandlerFactory : IHttpHandlerFactory
{
public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
{
if (some condition is true)
return new MySpecialHttpHandler();
return null;
}
public void ReleaseHandler(IHttpHandler handler) { }
}
ただし、このようにすると、既定の ASP.NET ハンドラーが完全にオーバーライドされます。つまり、ASP.NET ページと Web サービスが機能しなくなります。「if」の「何らかの条件」を満たさない URL ごとに空白のページが表示されます。したがって、戻るnull
のは間違っているようです。
では、ASP.NET ページと Web サービスが引き続き正常に処理されるようにするには、代わりに何を返す必要があるのでしょうか?