[
https://issues.apache.org/jira/browse/LOG4NET-398?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14599053#comment-14599053
]
Lars Nellemann Nielsen edited comment on LOG4NET-398 at 6/24/15 8:13 AM:
-------------------------------------------------------------------------
We have run into the same problem and can replicate the issue on sites running
in IIS and a console application acting as a host for multiple other console
applications, separated in appDomains. So both rely on separate appDomains.
The issue goes away when not setting log4net.LogicalThreadContext.Properties
LogicalThreadContext is implemented using
System.Runtime.Remoting.Messaging.CallContext, and stores the data in
log4net.Util.PropertiesDictionary which inherits
log4net.Util.ReadOnlyPropertiesDictionary
making
[log4net.Util.ReadOnlyPropertiesDictionary|http://svn.apache.org/viewvc/logging/log4net/trunk/src/log4net/Util/ReadOnlyPropertiesDictionary.cs?view=markup]
inherit
[MarshalByRefObject|https://msdn.microsoft.com/en-us/library/system.marshalbyrefobject%28v=vs.110%29.aspx]
fixes the issue.
Its obvious that the properties dictionary cannot cross into the other
appdomain, since inheriting MarshalByRefObject fixes it. I cannot see why
installing log4net into the GAC fixes the problem as well, perhaps someone can
shed some light on this?
Can anyone confirm the fix?
was (Author: nellemandela):
We have run into the same problem and can replicate the issue on sites running
in IIS and a console application acting as a host for multiple other console
applications, separated in appDomains. So both rely on separate appDomains.
The issue goes away when not setting log4net.LogicalThreadContext.Properties
LogicalThreadContext is implemented using
System.Runtime.Remoting.Messaging.CallContex, and stores the data in
log4net.Util.PropertiesDictionary which inherits
log4net.Util.ReadOnlyPropertiesDictionary
making
[log4net.Util.ReadOnlyPropertiesDictionary|http://svn.apache.org/viewvc/logging/log4net/trunk/src/log4net/Util/ReadOnlyPropertiesDictionary.cs?view=markup]
inherit
[MarshalByRefObject|https://msdn.microsoft.com/en-us/library/system.marshalbyrefobject%28v=vs.110%29.aspx]
fixes the issue.
Its obvious that the properties dictionary cannot cross into the other
appdomain, since inheriting MarshalByRefObject fixes it. I cannot see why
installing log4net into the GAC fixes the problem as well, perhaps someone can
shed some light on this?
Can anyone confirm the fix?
> SerializationException after setting a LogicalThreadContext property
> --------------------------------------------------------------------
>
> Key: LOG4NET-398
> URL: https://issues.apache.org/jira/browse/LOG4NET-398
> Project: Log4net
> Issue Type: Task
> Components: Core
> Affects Versions: 1.2.12
> Environment: Visual Studio 2010
> Reporter: Thomas Meum
> Priority: Minor
> Labels: triaged
>
> I have found that accessing Page.Request.Url after setting a
> LogicalThreadContext property causes a SerializationException with the
> following message: Type is not resolved for member
> 'log4net.Util.PropertiesDictionary,log4net, Version=1.2.12.0,
> Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a'.
> I have been able to reproduce the problem on two different machines with the
> following steps:
> 1. Create a new ASP.NET Empty Web Application
> 2. Add a reference to log4net.dll
> 3. Add a new Web Form
> 4. Add the following code to Page_Load:
> log4net.LogicalThreadContext.Properties["Test"] = 1;
> Uri url = Request.Url;
> 5. Hit F5
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)