实现IHttpHandlerFactory时,GetHandler可以返回null吗?

时间:2011-08-03 06:01:41

标签: asp.net

此代码会抛出异常:

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

            ...

        return new MyHttpHandler();
    }
}

1 个答案:

答案 0 :(得分:1)

如果您查看此article on MSDN,您会看到他们在示例中从GetHandler返回null。但是,如果请求不是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响应。