Unable to load one or more of the requested types.
今天在项目deploy以后遇到了一个问题,导致有些页面不能够正常访问,而localhost访问却完全没有问题。
虽然在找到原因之后只用了不到10秒钟就解决了这个问题,但是由于自己的不正确的判断和error message的误导,最终却我花了我半天时间。
P.S. 如果你使用extjs+.net mvc,那么你应该比较能follow。
项目中我在用Extjs,发现上述问题也是在firebug的报错之下。Extjs有一个关于direct provider的设置,在打开页面的时候Ext.app.REMOTING_API没有‘变成’一个object,而是undefined。我猜测在向服务器获取该对象的时候出现了异常。但是具体是什么原因就没办法猜到。
以为是发布的时候有什么配置文件没有发布正确什么的(以前常遇到),所以各种重新替换发布和删除发布,各种iisreset,结果毫无作用。
接着我打开普通的cshtml的页面访问,没有问题。但是在ajax登录的时候就出现了异常,报错信息是"Unable to load one or more of the requested types.Retrieve the LoaderExceptions property for more information."。脑子一热以为是ajax请求被阻止掉了。
在本地环境下就是不出现问题,而服务器端又不能够调试。只能在ajax登录的action当中定义一个字符串reason,每隔一个语句块在reason后面加上一句话表示运行到的位置,最后在catch块当中返回reason。用这个方法发现这个异常和ajax不ajax没有半毛钱的关系。
这个时候才决定google it。发现一堆问相同问题的,回答也是五花八门的。不过大多数的work around都围绕Entity Framework左右,完全不知所以。但是reason告诉我确实是在使用EF的代码处出现的异常。
挑些靠谱的work around依次处理一遍,最后在看到http://social.msdn.microsoft.com/Forums/zh-SG/adodotnetentityframework/thread/bc4b927f-e2ee-45e3-9ed1-ab37e4821ed2的时候,按照他所说的方法,按照http://msdn.microsoft.com/en-us/library/t1zz5y8c.aspx去做了一遍,发现最近加到项目里面的关于Crystal Report的Reference的Copy Local Property是false去掉引用,重新发布,整个天都晴了。心情和那老兄类似。
Trouble Shooting 的功力还是需要好好培养的。