我正在使用ASP.Net MVC 3框架,并将依赖注入集成到应用程序中。我正在尝试创建一个自定义控制器工厂。我目前遇到的最大问题是我的IControllerFactory的实现.CreateController获取传递的请求,例如css,javascript和其他内容文件,这些内容文件随后导致它作为“Scripts/html5.js”的类型抛出异常不存在。代码是继承给我的,所以请保存你对这个偶然状态的批评。下面是执行:DefaultControllerFactory如何处理内容请求
public virtual IController CreateController(RequestContext requestContext, string controllerName)
{
if (requestContext == null)
{
throw new ArgumentNullException("requestContext");
}
if (String.IsNullOrEmpty(controllerName))
{
throw new ArgumentException("Value cannot be null or empty", "controllerName");
}
this.RequestContext = requestContext;
try
{
return container.Resolve<IController>(controllerName.ToLower());
}
catch (Exception ex)
{
Trace.TraceError(ex.Message);
return innerFactory.CreateController(requestContext, controllerName);
}
}
ASP .NET MVC控制器不处理对静态文件的请求。这应该通过路由完成,它将它交给IIS。我会先看看那里。 – Yuck 2012-02-03 18:49:22
请求**不存在**的静态项**传递给MVC控制器工厂。默认工厂忽略它们,但是当你覆盖它时,你也必须忽略它们。 – 2012-07-20 00:08:00
您的页面链接到缺少的资源不是实际的问题吗?这会一直发生,因为漫游器和垃圾邮件发送者会尝试访问您网站上的各种文件。我认为在这种情况下的答案是不记录错误?下面的解决方案,虽然更清洁并不能解决这个问题,但我们期望您已将缺少的控制器的行为更改为404,但这可能是正确的,但可能与原始代码一样容易。\ – 2012-07-20 00:11:34