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.dll
Running under executable  E:\repros\newdom1.exe
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: Where-ref bind. Location = E:\repros\runexe.exe
LOG: Appbase =
file://random/share7

LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = newdom1.exe
Calling 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.