Kas*_*sem 10 asp.net-mvc asp.net-mvc-3
我最近将Microsoft Unity添加到我的MVC3项目中,现在我收到此错误:
无法找到路径'/favicon.ico'的控制器,或者它没有实现IController.
我真的没有favicon.ico,所以我不知道它来自哪里.而最奇怪的是视图实际上正在呈现,然后这个错误被抛出......我不确定我的控制器工厂类是否有问题,因为我从一些教程得到了代码(我不是IoC - 这是我第一次这样做).这是代码:
public class UnityControllerFactory:DefaultControllerFactory {IUnityContainer container;
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;
}
Run Code Online (Sandbox Code Playgroud)
}
有什么建议?
提前致谢!
Nat*_*lor 29
这与您的控制器工厂没有任何关系,但它是您可以轻松解决的问题.
如果您使用的是Webkit浏览器(特别是Chrome,我认为是Safari),对任何网站的请求将自动伴随对'/favicon.ico'的请求.浏览器正试图找到一个快捷方式图标陪伴您的网站,(无论何种原因)的默认的快捷方式图标的路径已经被标准化为"/favicon.ico".
要避免出现错误,只需在MVC Web应用程序的路由表中定义一个IgnoreRoute():
RouteTable.Routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.([iI][cC][oO]|[gG][iI][fF])(/.*)?" });
Run Code Online (Sandbox Code Playgroud)
这将确保MVC不会处理对'/favicon.ico'(或'/favicon.gif')的任何请求.
| 归档时间: |
|
| 查看次数: |
4125 次 |
| 最近记录: |