我正在尝试使用ie7-js库使我的浏览器低于ie9认为它们是ie9。图书馆在这里托管:
http://code.google.com/p/ie7-js/
我在我的母版页中引用如下:
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
由于我已经介绍了这个文件,我的StructureMap控制器工厂 - 在这里定义:
public class StructureMapControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
try
{
if (controllerType == null) return base.GetControllerInstance(requestContext, controllerType);
return ObjectFactory.GetInstance(controllerType) as IController;
}
catch (System.Exception xpt)
{
// The controller for path '/WSOD-layout-page.css' was not found or does not implement IController.
// The controller for path '/layout-header.css' was not found or does not implement IController.
// The controller for path '/layout-content.css' was not found or does not implement IController.
// The controller for path '/component-leaderboard.css' was not found or does not implement IController.
// etc...
}
}
}
发现以下错误:
System.Web.HttpException: The controller for path '/component-page-title.css' was not found or does not implement IController.
但不仅仅是这个 - 我正在为我引用的每个css文件收到类似的错误。为什么会这样呢?
为了澄清,这些CSS文件托管在与我正在处理的域不同的域上。这会是问题吗?
为什么CSS请求被路由到我的应用程序?我想知道这是否可以阻止/解决这个问题?
更新
我已将此作为错误提交给开发人员。错误报告在此处:http://code.google.com/p/ie7-js/issues/detail?id=284
答案 0 :(得分:0)
IE7-JS脚本文件正在尝试从服务器检索这些文件以对它们进行一些处理。
在这里查看脚本(是的,我知道它不是Ie9,但这是我见过的第一个非压缩):
http://code.google.com/p/ie7-js/source/browse/version/2.0(beta)/src/IE8.js
您可以看到它正在尝试加载这些CSS文件(第1170行)。我认为系统看到这些CSS文件请求是一个拦截动作,并且正在轰炸它,因为它无法理解它,这就是为什么它在ControllerFactory上轰炸。
我不确定为什么ASP.NET MVC将它们视为Action(GET / POST)。但我希望这会有所帮助。
答案 1 :(得分:0)
为了澄清,这些CSS文件托管在与我正在处理的域不同的域上。这会是问题吗?
正如Ryan所说,1170ish上的代码试图确定CSS文件的路径。无论出于何种原因,它假设它们位于同一个域中,因此我认为它是IE9.js的错误/特征。最终调用这两个方法似乎从路径中截断域:
var RELATIVE = /^[\w\.]+[^:]*$/;
function makePath(href, path) {
if (RELATIVE.test(href)) href = (path || "") + href;
return href;
};
function getPath(href, path) {
href = makePath(href, path);
return href.slice(0, href.lastIndexOf("/") + 1);
};