HI Lee,
Welcome to ASPNET newsgroup.
Regarding on the problem you mentioned, I think the problem is just due to
the Log4net 's assembly is a strong-named assembly and be put in the
asp.net application's private bin path. Currently the ASP.NET application
host dosn't support strong-named assembly in private bin dir, we should
always put strong-named ones into GAC. At runtime, asp.net will shadow copy
the private assemblies in the private bin dir , however for strong-named
ones in it, they may not be shadow copied so that after the appdomain(of
the application) restart, we'll encountering loading type/assembly failed
for those assemblies. Also, from the fusion log you attached, we can find
the the runtime locate the asp.net temporary dir didn't find the copied one
and locate the assembly in private bin dir but failed to load it.
Please try put all the strong-named assemblies in your app's private bin
dir and register them in GAC to see whether this do the work. In addition
,here 're some kb articles discussing on some other existing issue when
deploying strong-named assembly in asp.net app's private bin path:
http://support.microsoft.com/?id=813833 http://support.microsoft.com/?id=813830
Hope also helps. Thanks,
Steven Cheng
Microsoft Online Support
Get Secure!
www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)
--------------------
| Thread-Topic: Intermittent MissingFieldExc eption
| thread-index: AcWzwCzOmnwAiKd QTaW8YeD0n1xIAw ==
| X-WBNR-Posting-Host: 194.200.242.250
| From: "=?Utf-8?B?TGVlIENoYXB tYW4=?=" <Le********@new sgroup.nospam>
| Subject: Intermittent MissingFieldExc eption
| Date: Wed, 7 Sep 2005 08:24:02 -0700
| Lines: 350
| Message-ID: <86************ *************** *******@microso ft.com>
| MIME-Version: 1.0
| Content-Type: text/plain;
| charset="Utf-8"
| Content-Transfer-Encoding: 7bit
| X-Newsreader: Microsoft CDO for Windows 2000
| Content-Class: urn:content-classes:message
| Importance: normal
| Priority: normal
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
| Newsgroups: microsoft.publi c.dotnet.framew ork.aspnet
| NNTP-Posting-Host: TK2MSFTNGXA03.p hx.gbl 10.40.2.250
| Path: TK2MSFTNGXA01.p hx.gbl!TK2MSFTN GXA03.phx.gbl
| Xref: TK2MSFTNGXA01.p hx.gbl
microsoft.publi c.dotnet.framew ork.aspnet:1229 09
| X-Tomcat-NG: microsoft.publi c.dotnet.framew ork.aspnet
|
|
| Hi,
|
| I have a problem where my ASP.NET application occasionally generates a
| MissingFieldExc eption exception. This unexpectedly happened on my
development
| box, and so I was able to extract some information from the debugger:
|
| The field that is "missing" is called 'logger'. Here's it's description
| taken from ildasm.exe:
|
| .field public static class [log4net]log4net.ILog logger
|
| This field is in a class called 'Utility', which is in an assembly called
| 'Infrastructure '. This Infrastructure' s assembly manifest shows that the
| log4net assembly is referenced thus:
|
| .assembly extern log4net
| {
| .publickeytoken = (07 01 22 69 AF 86 3A C7 )
| .ver 1:2:9:0
| }
|
| The log4net assembly is a strongly named assembly, but it isn't in the
GAC.
| I have a suspicion that the fact that the assembly is strongly named may
be
| relevant, because the problem never occurs with our other assemblies.
|
| System.AppDomai n.CurrentDomain .GetAssemblies( ) showed that there were 40
| assemblies loaded. The MissingFieldExc eption exception was being
generated
| because the Infrastructure assembly wasn't loading properly. When I
called
| GetTypes() on the Infrastructure assembly, a ReflectionTypeL oadException
| exception was thrown saying that "One or more of the types in the
assembly
| unable to load". Here are the exception's details (taken from the Visual
| Studio watch window):
|
| - System.AppDomai n.CurrentDomain .GetAssemblies( )[14].GetTypes() {"One or
| more of the types in the assembly unable to
| load."} System.Reflecti on.ReflectionTy peLoadException
| + System.SystemEx ception {"One or more of the types in the assembly
unable
| to load."} System.SystemEx ception
| + _classes {Length=72} System.Type[]
| - _exceptions {Length=4} System.Exceptio n[]
| - [0] {"log4net"} System.IO.FileL oadException
| - System.IO.IOExc eption {System.IO.File LoadException}
System.IO.IOExc eption
| - System.SystemEx ception {"Access is denied:
| 'log4net'."} System.SystemEx ception
| - System.Exceptio n {"Access is denied: 'log4net'." } System.Exceptio n
| System.Object {System.IO.File LoadException} System.Object
| _className null string
| _COMPlusExcepti onCode -532459699 int
| _exceptionMetho d <undefined value> System.Reflecti on.MethodBase
| _exceptionMetho dString null string
| _helpURL null string
| _HResult -2147024891 int
| _innerException { } System.Exceptio n
| _message "Access is denied: 'log4net'." string
| _remoteStackInd ex 0 int
| _remoteStackTra ceString null string
| _source null string
| _stackTrace <undefined value> System.Object
| _stackTraceStri ng null string
| _xcode -532459699 int
| _xptrs 0 int
| HelpLink null string
| HResult -2147024891 int
| InnerException { } System.Exceptio n
| Message "Access is denied: 'log4net'." string
| Source null string
| StackTrace null string
| TargetSite <undefined value> System.Reflecti on.MethodBase
| _fileName "log4net" string
| _fusionLog "=== Pre-bind state information ===\r\nLOG: DisplayName =
| log4net, Version=1.2.9.0 , Culture=neutral ,
PublicKeyToken= 07012269af863ac 7\n
| (Fully-specified)\r\nL OG: Appbase =
| file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation\r\ nLOG:
| Initial PrivatePath = bin\r\nCalling assembly : Infrastructure,
| Version=0.0.0.4 4, Culture=neutral , PublicKeyToken= null.\r\n===\n\ r\nLOG:
| Attempting download of new URL
| file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET
| Files/applysource/f27b5c84/cdeddc66/log4net.DLL.\r\ nLOG: Attempting
download
| of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary
| ASP.NET Files/applysource/f27b5c84/cdeddc66/log4net/log4net.DLL.\r\ nLOG:
| Attempting download of new URL
|
file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation/bin/log4net
..DLL.\r\n" string
| FileName "log4net" string
| FusionLog "=== Pre-bind state information ===\r\nLOG: DisplayName =
| log4net, Version=1.2.9.0 , Culture=neutral ,
PublicKeyToken= 07012269af863ac 7\n
| (Fully-specified)\r\nL OG: Appbase =
| file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation\r\ nLOG:
| Initial PrivatePath = bin\r\nCalling assembly : Infrastructure,
| Version=0.0.0.4 4, Culture=neutral , PublicKeyToken= null.\r\n===\n\ r\nLOG:
| Attempting download of new URL
| file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET
| Files/applysource/f27b5c84/cdeddc66/log4net.DLL.\r\ nLOG: Attempting
download
| of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary
| ASP.NET Files/applysource/f27b5c84/cdeddc66/log4net/log4net.DLL.\r\ nLOG:
| Attempting download of new URL
|
file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation/bin/log4net
..DLL.\r\n" string
| Message "Access is denied: 'log4net'." string
| - [1] {"log4net"} System.IO.FileL oadException
| - System.IO.IOExc eption {System.IO.File LoadException}
System.IO.IOExc eption
| - System.SystemEx ception {"Access is denied:
| 'log4net'."} System.SystemEx ception
| - System.Exceptio n {"Access is denied: 'log4net'." } System.Exceptio n
| System.Object {System.IO.File LoadException} System.Object
| _className null string
| _COMPlusExcepti onCode -532459699 int
| _exceptionMetho d <undefined value> System.Reflecti on.MethodBase
| _exceptionMetho dString null string
| _helpURL null string
| _HResult -2147024891 int
| _innerException { } System.Exceptio n
| _message "Access is denied: 'log4net'." string
| _remoteStackInd ex 0 int
| _remoteStackTra ceString null string
| _source null string
| _stackTrace <undefined value> System.Object
| _stackTraceStri ng null string
| _xcode -532459699 int
| _xptrs 0 int
| HelpLink null string
| HResult -2147024891 int
| InnerException { } System.Exceptio n
| Message "Access is denied: 'log4net'." string
| Source null string
| StackTrace null string
| TargetSite <undefined value> System.Reflecti on.MethodBase
| _fileName "log4net" string
| _fusionLog "=== Pre-bind state information ===\r\nLOG: DisplayName =
| log4net, Version=1.2.9.0 , Culture=neutral ,
PublicKeyToken= 07012269af863ac 7\n
| (Fully-specified)\r\nL OG: Appbase =
| file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation\r\ nLOG:
| Initial PrivatePath = bin\r\nCalling assembly : Infrastructure,
| Version=0.0.0.4 4, Culture=neutral , PublicKeyToken= null.\r\n===\n\ r\nLOG:
| Attempting download of new URL
| file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET
| Files/applysource/f27b5c84/cdeddc66/log4net.DLL.\r\ nLOG: Attempting
download
| of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary
| ASP.NET Files/applysource/f27b5c84/cdeddc66/log4net/log4net.DLL.\r\ nLOG:
| Attempting download of new URL
|
file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation/bin/log4net
..DLL.\r\n" string
| FileName "log4net" string
| FusionLog "=== Pre-bind state information ===\r\nLOG: DisplayName =
| log4net, Version=1.2.9.0 , Culture=neutral ,
PublicKeyToken= 07012269af863ac 7\n
| (Fully-specified)\r\nL OG: Appbase =
| file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation\r\ nLOG:
| Initial PrivatePath = bin\r\nCalling assembly : Infrastructure,
| Version=0.0.0.4 4, Culture=neutral , PublicKeyToken= null.\r\n===\n\ r\nLOG:
| Attempting download of new URL
| file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET
| Files/applysource/f27b5c84/cdeddc66/log4net.DLL.\r\ nLOG: Attempting
download
| of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary
| ASP.NET Files/applysource/f27b5c84/cdeddc66/log4net/log4net.DLL.\r\ nLOG:
| Attempting download of new URL
|
file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation/bin/log4net
..DLL.\r\n" string
| Message "Access is denied: 'log4net'." string
| - [2] {"log4net"} System.IO.FileL oadException
| - System.IO.IOExc eption {System.IO.File LoadException}
System.IO.IOExc eption
| - System.SystemEx ception {"Access is denied:
| 'log4net'."} System.SystemEx ception
| - System.Exceptio n {"Access is denied: 'log4net'." } System.Exceptio n
| System.Object {System.IO.File LoadException} System.Object
| _className null string
| _COMPlusExcepti onCode -532459699 int
| _exceptionMetho d <undefined value> System.Reflecti on.MethodBase
| _exceptionMetho dString null string
| _helpURL null string
| _HResult -2147024891 int
| _innerException { } System.Exceptio n
| _message "Access is denied: 'log4net'." string
| _remoteStackInd ex 0 int
| _remoteStackTra ceString null string
| _source null string
| _stackTrace <undefined value> System.Object
| _stackTraceStri ng null string
| _xcode -532459699 int
| _xptrs 0 int
| HelpLink null string
| HResult -2147024891 int
| InnerException { } System.Exceptio n
| Message "Access is denied: 'log4net'." string
| Source null string
| StackTrace null string
| TargetSite <undefined value> System.Reflecti on.MethodBase
| _fileName "log4net" string
| _fusionLog "=== Pre-bind state information ===\r\nLOG: DisplayName =
| log4net, Version=1.2.9.0 , Culture=neutral ,
PublicKeyToken= 07012269af863ac 7\n
| (Fully-specified)\r\nL OG: Appbase =
| file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation\r\ nLOG:
| Initial PrivatePath = bin\r\nCalling assembly : Infrastructure,
| Version=0.0.0.4 4, Culture=neutral , PublicKeyToken= null.\r\n===\n\ r\nLOG:
| Attempting download of new URL
| file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET
| Files/applysource/f27b5c84/cdeddc66/log4net.DLL.\r\ nLOG: Attempting
download
| of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary
| ASP.NET Files/applysource/f27b5c84/cdeddc66/log4net/log4net.DLL.\r\ nLOG:
| Attempting download of new URL
|
file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation/bin/log4net
..DLL.\r\n" string
| FileName "log4net" string
| FusionLog "=== Pre-bind state information ===\r\nLOG: DisplayName =
| log4net, Version=1.2.9.0 , Culture=neutral ,
PublicKeyToken= 07012269af863ac 7\n
| (Fully-specified)\r\nL OG: Appbase =
| file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation\r\ nLOG:
| Initial PrivatePath = bin\r\nCalling assembly : Infrastructure,
| Version=0.0.0.4 4, Culture=neutral , PublicKeyToken= null.\r\n===\n\ r\nLOG:
| Attempting download of new URL
| file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET
| Files/applysource/f27b5c84/cdeddc66/log4net.DLL.\r\ nLOG: Attempting
download
| of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary
| ASP.NET Files/applysource/f27b5c84/cdeddc66/log4net/log4net.DLL.\r\ nLOG:
| Attempting download of new URL
|
file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation/bin/log4net
..DLL.\r\n" string
| Message "Access is denied: 'log4net'." string
| - [3] {"log4net"} System.IO.FileL oadException
| - System.IO.IOExc eption {System.IO.File LoadException}
System.IO.IOExc eption
| - System.SystemEx ception {"Access is denied:
| 'log4net'."} System.SystemEx ception
| - System.Exceptio n {"Access is denied: 'log4net'." } System.Exceptio n
| System.Object {System.IO.File LoadException} System.Object
| _className null string
| _COMPlusExcepti onCode -532459699 int
| _exceptionMetho d <undefined value> System.Reflecti on.MethodBase
| _exceptionMetho dString null string
| _helpURL null string
| _HResult -2147024891 int
| _innerException { } System.Exceptio n
| _message "Access is denied: 'log4net'." string
| _remoteStackInd ex 0 int
| _remoteStackTra ceString null string
| _source null string
| _stackTrace <undefined value> System.Object
| _stackTraceStri ng null string
| _xcode -532459699 int
| _xptrs 0 int
| HelpLink null string
| HResult -2147024891 int
| InnerException { } System.Exceptio n
| Message "Access is denied: 'log4net'." string
| Source null string
| StackTrace null string
| TargetSite <undefined value> System.Reflecti on.MethodBase
| _fileName "log4net" string
| _fusionLog "=== Pre-bind state information ===\r\nLOG: DisplayName =
| log4net, Version=1.2.9.0 , Culture=neutral ,
PublicKeyToken= 07012269af863ac 7\n
| (Fully-specified)\r\nL OG: Appbase =
| file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation\r\ nLOG:
| Initial PrivatePath = bin\r\nCalling assembly : Infrastructure,
| Version=0.0.0.4 4, Culture=neutral , PublicKeyToken= null.\r\n===\n\ r\nLOG:
| Attempting download of new URL
| file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET
| Files/applysource/f27b5c84/cdeddc66/log4net.DLL.\r\ nLOG: Attempting
download
| of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary
| ASP.NET Files/applysource/f27b5c84/cdeddc66/log4net/log4net.DLL.\r\ nLOG:
| Attempting download of new URL
|
file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation/bin/log4net
..DLL.\r\n" string
| FileName "log4net" string
| FusionLog "=== Pre-bind state information ===\r\nLOG: DisplayName =
| log4net, Version=1.2.9.0 , Culture=neutral ,
PublicKeyToken= 07012269af863ac 7\n
| (Fully-specified)\r\nL OG: Appbase =
| file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation\r\ nLOG:
| Initial PrivatePath = bin\r\nCalling assembly : Infrastructure,
| Version=0.0.0.4 4, Culture=neutral , PublicKeyToken= null.\r\n===\n\ r\nLOG:
| Attempting download of new URL
| file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET
| Files/applysource/f27b5c84/cdeddc66/log4net.DLL.\r\ nLOG: Attempting
download
| of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary
| ASP.NET Files/applysource/f27b5c84/cdeddc66/log4net/log4net.DLL.\r\ nLOG:
| Attempting download of new URL
|
file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation/bin/log4net
..DLL.\r\n" string
| Message "Access is denied: 'log4net'." string
| + LoaderException s {Length=4} System.Exceptio n[]
| + Types {Length=72} System.Type[]
|
|
| As you can see, .NET is failing to load the log4net assembly because of
an
| "acccess is denied" error. But the file
| C:/Environments/XXXX/Development/YYYY/Apply/Presentation/bin/log4net.DLL
did
| exist, and didn't have any strange security permission settings. In fact,
the
| assembly had been loaded - it was in the list of assemblies in the
current
| domain:
|
| - [17] {System.Reflect ion.Assembly} System.Reflecti on.Assembly
| System.Object {System.Reflect ion.Assembly} System.Object
| _DontTouchThis 206431072 int
- Cache {System.Reflect ion.Cache.Inter nalCache}
System.Reflecti on.Cache.Intern alCache
| System.Object {System.Reflect ion.Cache.Inter nalCache} System.Object
| Item <cannot view indexed property> System.Object
| - m_cache {Length=2} System.Reflecti on.Cache.Intern alCacheItem[]
- [0] {System.Reflect ion.Cache.Inter nalCacheItem}
System.Reflecti on.Cache.Intern alCacheItem
- System.ValueTyp e {System.Reflect ion.Cache.Inter nalCacheItem}
System.ValueTyp e
| System.Object {System.Reflect ion.Cache.Inter nalCacheItem} System.Object
| Key AssemblyName System.Reflecti on.Cache.CacheO bjType
| - Value "log4net, Version=1.2.9.0 , Culture=neutral ,
| PublicKeyToken= 07012269af863ac 7" System.Object
| string "log4net, Version=1.2.9.0 , Culture=neutral ,
| PublicKeyToken= 07012269af863ac 7" string
- [1] {System.Reflect ion.Cache.Inter nalCacheItem}
System.Reflecti on.Cache.Intern alCacheItem
- System.ValueTyp e {System.Reflect ion.Cache.Inter nalCacheItem}
System.ValueTyp e
| System.Object {System.Reflect ion.Cache.Inter nalCacheItem} System.Object
| Key EmptyElement System.Reflecti on.Cache.CacheO bjType
| Value <undefined value> System.Object
| m_numItems 1 int
| MinCacheSize 2 int
CodeBase
"file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation/bin/log4ne
t.DLL" string
| EntryPoint <undefined value> System.Reflecti on.MethodInfo
EscapedCodeBase
"file:///C:/Environments/XXXX/Development/YYYY/Apply/Presentation/bin/log4ne
t.DLL" string
| + Evidence {System.Securit y.Policy.Eviden ce}
System.Security .Policy.Evidenc e
| FullName "log4net, Version=1.2.9.0 , Culture=neutral ,
| PublicKeyToken= 07012269af863ac 7" string
| GlobalAssemblyC ache false bool
| ImageRuntimeVer sion "v1.1.4322" string
| Location @"c:\windows\mi crosoft.net\fra mework\v1.1.432 2\temporary
asp.net
|
files\applysour ce\f27b5c84\cde ddc66\assembly\ dl2\c30d5406\00 341f6d_f898c501 \
log4net.dll" string
| m_assemblyData <undefined value>
System.Reflecti on.Emit.Assembl yBuilderData
- m_cachedData {System.Reflect ion.Cache.Inter nalCache}
System.Reflecti on.Cache.Intern alCache
| System.Object {System.Reflect ion.Cache.Inter nalCache} System.Object
| Item <cannot view indexed property> System.Object
| - m_cache {Length=2} System.Reflecti on.Cache.Intern alCacheItem[]
- [0] {System.Reflect ion.Cache.Inter nalCacheItem}
System.Reflecti on.Cache.Intern alCacheItem
- System.ValueTyp e {System.Reflect ion.Cache.Inter nalCacheItem}
System.ValueTyp e
| System.Object {System.Reflect ion.Cache.Inter nalCacheItem} System.Object
| Key AssemblyName System.Reflecti on.Cache.CacheO bjType
| - Value "log4net, Version=1.2.9.0 , Culture=neutral ,
| PublicKeyToken= 07012269af863ac 7" System.Object
| string "log4net, Version=1.2.9.0 , Culture=neutral ,
| PublicKeyToken= 07012269af863ac 7" string
- [1] {System.Reflect ion.Cache.Inter nalCacheItem}
System.Reflecti on.Cache.Intern alCacheItem
- System.ValueTyp e {System.Reflect ion.Cache.Inter nalCacheItem}
System.ValueTyp e
| System.Object {System.Reflect ion.Cache.Inter nalCacheItem} System.Object
| Key EmptyElement System.Reflecti on.Cache.CacheO bjType
| Value <undefined value> System.Object
| m_numItems 1 int
| MinCacheSize 2 int
| ModuleResolve <undefined value>
System.Reflecti on.ModuleResolv eEventHandler
| s_localFilePref ix "file:" string
|
|
| The MissingFieldExc eption happens on a machine that doesn't have Visual
| Studio installed, so the problem can't be due to the build process
locking
| the DLL. In fact, as the problem is intermittent and won't go away until
we
| force ASP.NET to reload the application (by re-saving the web.config
file), I
| don't think it's an external system locking the file at all. One minute
| ASP.NET can load the assembly fine, the next it just seems to get
confused.
|
| Looking through past posts, it appears that a few other people are also
| seeing this problem, but no-one seems to have identified the cause yet.
I'm
| hoping that the "access is denied" exception shown above will help
someone
| work out what's going on.
|
| - Lee
|
|