本人有生以来的第一篇博客,嘿嘿,就发这个吧, 怎样在虚拟主机上使用Castle框架的ActiveRecord

2018-05-02 11:23:40 浏览数 (1)

        我在某个私人项目中使用了Castle 的 ActiveRecord.用起来那是真叫个爽,整个项目里楞是一句SQL语句都没有,嘿嘿。超级喜欢上了这个框架。直到有那么一次.....

        我在  www.51aspnet.net 里申请了一个免费的空间,然后把我的大作传上去一看,噢,不!他直接给了个黄色的出错页面,说什么没有权限! 我再本地试,怎么都是好的。无奈之下google之,发现 web.config里有个叫 <trust level="???">的配置节,默认是完全权限,即full,但是当我将它设置为普通即 <trust level="medium" />时,错误来了!本地也出错了。

       现在怎么办?看样子ActiveRecord不能在此空间使用。那让我数据库层全部重写?那不行,门也没有。于是,某菜鸟被逼无奈,只得引用Castle源代码,调试之,嘿嘿。这也算是本鸟第一hack开源框架哈哈,(以前的二次开发那不算),运气不错,不一会就跟到了,原来毛病在这里

Castle.ActiveRecordFrameworkInternalVisitorsXmlGenerationVisitor.cs 文件的1186行有这么一段:

代码语言:javascript复制
/// <summary>
        /// Create a valid name from a type, without including all the version and public key
        /// information
        /// </summary>
        public static String MakeTypeName(Type type)
        {
            if (type == null) return null;
            
            //return String.Format("{0}, {1}", type.FullName, type.Assembly.GetName().Name);
            return String.Format("{0}, {1}", type.FullName, type.Assembly.FullName.Substring(0,type.Assembly.FullName.IndexOf(",") )   );
        }

       看来是反射类型名称时出现的权限错误。改成象我这样再编译一下,再上传虚拟主机,成功!哈哈,祝贺我的首次Hack大功告成

0 人点赞