[ https://issues.apache.org/jira/browse/LOG4NET-341?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13281931#comment-13281931 ]
Dominik Psenner commented on LOG4NET-341: ----------------------------------------- I bisected it to revision 778073 and revision 778271. The commit log says: Fix for LOG4NET-154. Added StackTracePatternConverter that outputs the methods called before the log message. http://svn.apache.org/viewvc?view=revision&revision=778271 My guess that since then a logevent holds a reference to the client assembly was probably right. The reference comes from the stacktrace (location) information. Good is that we now know what goes wrong, but I don't know a way to fix it without breaking the StackTracePatternConverter functionality. The problem is that the server cannot half deserialize a logging event by ignoring the stacktrace information. And on the other hand the client must send that information along with the log event to the server since the client does not know if the server wants to access that information. So there are 2 options now: 1-FIX] Rewrite the StackTracePatternConverter so that it clones the stacktrace information into a meta structure that does not hold a reference to the calling assembly. This will take time and I can't give you any estimates. 2-HOTFIX] Make the client assembly accessible at server side. The best option here is to add a dependency on the client project so that visual studio builds the client stuff into the server. > RemotingAppender Error > ---------------------- > > Key: LOG4NET-341 > URL: https://issues.apache.org/jira/browse/LOG4NET-341 > Project: Log4net > Issue Type: Bug > Components: Appenders > Affects Versions: 1.2.11 > Environment: Windows 7, .Net Framework 4, VS C# 2010 > Reporter: Sandra Neumann > Priority: Blocker > Fix For: 1.2.10 > > Attachments: screenshot-1.jpg > > > I have a solution with a console application (.Net 4 and log4net v1.2.11) > which implement the Remoting sink - server side. And a WPF or WindowsForms > application - client side. The framework version on the client side doesn't > matter. But the log4net version is different. On v1.2.10 anything is ok. When > I reference the client with v1.2.11 throw this error: > log4net:ERROR [RemotingAppender] ErrorCode: GenericFailure. Failed in > SendBufferCallback > System.Reflection.TargetInvocationException: Exception has been thrown by the > target of an invocation. ---> System.IO.FileNotFoundException: Could not load > file or assembly 'WpfTestApplication, Version=1.0.0.0, Culture=neutral, > PublicKeyToken=null' or one of its dependencies. Das System kann die > angegebene Datei nicht finden. > at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String > codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, > StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean > forIntrospection, Boolean suppressSecurityChecks) > at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String > codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, > StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean > forIntrospection, Boolean suppressSecurityChecks) > at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName > assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean > forIntrospection, Boolean suppressSecurityChecks) > at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, > Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean > forIntrospection) > at System.Reflection.Assembly.Load(String assemblyString) > at > System.Runtime.Serialization.FormatterServices.LoadAssemblyFromString(String > assemblyName) > at System.Reflection.MemberInfoSerializationHolder..ctor(SerializationInfo > info, StreamingContext context) > --- End of inner exception stack trace --- > Server stack trace: > at System.RuntimeMethodHandle._SerializationInvoke(IRuntimeMethodInfo > method, Object target, SignatureStruct& declaringTypeSig, SerializationInfo > info, StreamingContext context) > at > System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object > obj, SerializationInfo info, StreamingContext context) > at > System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder > holder) > at System.Runtime.Serialization.ObjectManager.DoFixups() > at > System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler > handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, > IMethodCallMessage methodCallMessage) > at > System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream > serializationStream, HeaderHandler handler, Boolean fCheck, Boolean > isCrossAppDomain, IMethodCallMessage methodCallMessage) > at > System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryRequestMessage(String > objectUri, Stream inputStream, Boolean bStrictBinding, TypeFilterLevel > securityLevel) > at > System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack > sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream > requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, > Stream& responseStream) > Exception rethrown at [0]: > at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage > reqMsg, IMessage retMsg) > at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& > msgData, Int32 type) > at > log4net.Appender.RemotingAppender.IRemoteLoggingSink.LogEvents(LoggingEvent[] > events) > at log4net.Appender.RemotingAppender.SendBufferCallback(Object state) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira