So the other day I received an email from a colleague. He had an assembly load failure. And the fusion binding log looks like following:
*** Assembly Binder Log Entry (2/10/2004 @ 5:41:08 PM) ***The operation failed.Bind result: hr = 0x80070035. The network path was not found.Assembly manager loaded from: C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\fusion.dllRunning under executable E:\repros\newdom1.exe--- A detailed error log follows. === Pre-bind state information ===LOG: Where-ref bind. Location = E:\repros\runexe.exeLOG: Appbase = file://random/share7
LOG: Initial PrivatePath = NULLLOG: Dynamic Base = NULLLOG: Cache Base = NULLLOG: AppName = newdom1.exeCalling assembly : (Unknown).===LOG: Attempting application configuration file download.LOG: Download of application configuration file was attempted from file://random/E$/repros/newdom1.exe.config.
The reason we failed the load is because \\random\e$ is not accessible. Thus we can not determine what is inside the config file.
On the other hand, if the config file is set to c:\random\non-existing-file, the assembly load will succeed.
The difference between these two cases is, in the first case, we received an ERROR_BAD_NETPATH from Win32 API, while in the latter we received a FILE_NOT_FOUND.
It is all about what we consider as a catastrophic failure. If we know the config file does not exist, it is OK. But if we can’t determine if the config file exists or not, we consider it as a catastrophic failure.