最近一直在跟godaddy较劲。我们是对欧美的部门,部门里面不少项目都放到了godaddy上面,一直由我来负责维护和发布,对于godaddy我真是深恶痛绝啊,这破网站,就有一个好处,哪就是便宜,其余的,我真是无语了。每次,往上面传东西,都要浪费我半天的时间,时间就是在等待中过去了,更让我郁闷的是,godaddy默认的安全级别是中等,哎,还不能自己改,手里一个新的项目用的是第三方Castle-SourceCode,incubating-log4net-1.2.10,source-revision-513437的引用。在本地上可以正常运行,但是上传到godaddy上面,就是不能通过,简直把我郁闷死了。
想了很多的解决方法,也上网找了很多的资料,就是说,
Godaddy的windows主机空间一般不允许调用第三方DLL,所以在asp.net 运行时经常出现:
Required permissions cannot be acquired.
Description: An unhandled exception occurred during the execution of the current web request.
Please review the stack trace for more information about the error and where it originated in the code.
GODDADY设置信任级别为Medium,而且不客户不能修改 而有的程序需要到全部信任<trust level="Full"/>
你可以在web.config里面把这个注释掉或删掉<trust level="Full"/>
注:在机器上还有个machine.config,,z级别比web.config更高.
所以他在machine.config里限制了<trust level="Medium"/>,你就没办法了.
说明下,这个限制是不能引用第三方DLL文件.
也就是说没有解决的方法..除非和GODADDY商量让他开放权限..但希望不大
折腾了一周,最后没有办法了,只能把要引用的源码给修改了。把IBatisNet.Common.Utilities.Objects里面的DelegateFactory方法做了修改,原来的是DynamicMethod dynamicMethod = new DynamicMethod("CreateImplementation", typeof(object), new Type[] { typeof(object[]) }, this.GetType().Module, true);给改成DynamicMethod dynamicMethod = new DynamicMethod("CreateImplementation", typeof(object), new Type[] { typeof(object[]) }, this.GetType().Module, false);凡是里面所有的DynamicMethod ,都改成false。然后在重新进行编译,和引用。
哎,就这么点东西,整整花了我一周的时间,真是让我郁闷的快要疯了。不过现在看来也算是又长个经验了,起码这几天,对源码有了一些了解。
DynamicMethod 类(位于System.Reflection.Emit名空间下), 用于定义并表示一种可编译、执行和丢弃的动态方法。