Проблема с пользовательским контроллером factory

Недавно я добавил Microsoft Unity в свой проект MVC3, и теперь я получаю эту ошибку:

Контроллер для пути '/favicon.ico' не найден или не реализует IController.

У меня нет favicon.ico, поэтому я понятия не имею, откуда это. И самое странное, что представление действительно отображается, и ТОГДА эта ошибка возникает... Я не уверен, что это что-то не так с моим контроллером класса factory, потому что я получил код из некоторого учебника (я не к IoC - это первый раз, когда я это делаю). Здесь код:

открытый класс UnityControllerFactory: DefaultControllerFactory {   Контейнер IUnityContainer;

public UnityControllerFactory(IUnityContainer _container)
{
    container = _container;
}

protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
    IController controller;

    if(controllerType == null)
        throw new HttpException(404, string.Format("The controller for path '{0}' could not be found or it does not implement IController.",
            requestContext.HttpContext.Request.Path));

    if(!typeof(IController).IsAssignableFrom(controllerType))
        throw new ArgumentException(string.Format("Type requested is not a controller: {0}",
                                                            controllerType.Name),
                                                            "controllerType");
    try
    {
        controller = container.Resolve(controllerType) as IController;
    }
    catch (Exception ex)
    {
        throw new InvalidOperationException(String.Format(
                                "Error resolving controller {0}",
                                controllerType.Name), ex);
    }
    return controller;
}

}

Любые предложения?

Спасибо заранее!

Ответ 1

Это не имеет никакого отношения к вашему контроллеру factory, но это то, к чему вы можете легко обратиться.

Если вы используете браузер Webkit (особенно Chrome, Safari тоже, я думаю), запрос на любой сайт автоматически будет сопровождаться запросом "/favicon.ico". Браузер пытается найти значок ярлыка для сопровождения вашего сайта и (по какой-либо причине) путь по умолчанию для ярлыков ярлыков стандартизован как "/favicon.ico".

Чтобы избежать ошибки, которую вы получаете, просто определите IgnoreRoute() в таблице маршрутизации вашего веб-приложения MVC:

RouteTable.Routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.([iI][cC][oO]|[gG][iI][fF])(/.*)?" });

Это гарантирует, что любой запрос '/favicon.ico' (или '/favicon.gif') не будет обрабатываться MVC.

Ответ 2

Я тоже это сделал:

    catch (Exception ex)
{
    /*throw new InvalidOperationException(String.Format(
                            "Error resolving controller {0}",
                            controllerType.Name), ex);*/
    base.GetControllerInstance(requestContext,controllerType);
}