重写成员“log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)”时违反了继承安全性规则
在.NET 4.0下使用最新版本的log4Net 1.2.10,会遇到下面这样的错误:
重写成员“log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(System.Runtime.Serialization.SerializationInfo,
System.Runtime.Serialization.StreamingContext)”时违反了继承安全性规则。重写方法的安全可访问性必须与所重写方法的安全可访问性
匹配。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.TypeLoadException: 重写成员“log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData
(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)”时违反了继承安全性规则。重写
方法的安全可访问性必须与所重写方法的安全可访问性匹配。
源错误:
行 10: public class CustomerController : Controller
行 11: {
行 12: private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(CustomerController));
经跟踪源码,要解决这个错误,应对log4net源码做如下修改:
1、使用NET_20预编译常量编译log4net项目,目标Runtime改为.NET 4.0 framework;
2、确保log4net.Util.SystemInfo.CurrentThreadId返回的是System.Threading.Thread.CurrentThread.ManagedThreadId;
3、注释掉AssemblyInfo.cs中的代码行: [assembly: System.Security.AllowPartiallyTrustedCallers] 或者改为[assembly:SecurityRules(SecurityRuleSet.Level1)]
4、更改XmlConfigurator.cs 中的settings.ProhibitDtd = false; 为settings.DtdProcessing = DtdProcessing.Parse;
http://www.cnblogs.com/sgsoft/archive/2011/03/22/1991976.html
最新文章
- cocos基础教程(12)点击交互的三种处理
- 为什么SQL语句加 1=1
- Ajax的常用框架有哪些?
- jquery创建动态的div
- iOS 开发之Block
- js事件绑定函数
- vue项目中遇到的问题
- [MySQL]理解关系型数据库4个事务隔离级别
- HTTP1.0 HTTP 1.1 HTTP 2.0主要区别
- 【转载】linux下的mount命令详解;
- Net 常用资源
- javaScript实现点击按钮直接打印
- FFMPEG推流到RTMP服务器命令 - weixin_37897683的博客 - CSDN博客 https://blog.csdn.net/weixin_37897683/article/details/81225228
- linux命令-df查看磁盘命令
- 轻松加减你的NSDate值
- hdu1133 Buy the Ticket (卡兰特数应用+java大数)
- nyoj_676_小明的求助_201312042142-2
- lua队列实现
- Robot Framework初步使用
- JAVA命令运行cmd命令得到的结果乱码Runtime.getRuntime().exec(";";);
热门文章
- Web安全之CSRF攻击
- C#联合Union的实现方式
- SAP中禁止特定用户更改密码
- System.Web.HttpException: 无法序列化会话状态。在“StateServer”或“SQLServer”模式下,ASP.NET 将序列化会话状态对象,因此不允许使用无法序列化的对象或 MarshalByRef 对象。如果自定义会话状态存储在“Custom”模式下执行了类似的序列化,则适用同样的限制。 --->; System.Runtime.Serialization.Seria
- NSString的内存管理问题 (转载)
- macbook安装win7
- CentOS 6.3下MySQL 5.6源码安装
- 更换mysql数据目录后出现ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 的解决办法
- 万能面试问题大全,教你怎么回答,怎么拿下offer
- Vim指令备忘