I’m trying to use CreateApplicationHost to create an Asp.Net application host for a simple web server, however I’m getting a System.IO.FileNotFoundException when it attempts to create an instance of my marshalling object:
host = (MyMarshaller)ApplicationHost.CreateApplicationHost((MyMarshaller), virtualDir, physicalDir);
I believe that this error is because it cannot find the assembly containing the class MyMarshaller – if I put this assembly in the bin directory of physicalDir then everything works fine, however I don’t want to do this (I also don’t want to place my assembly in the GAC either).
Is there any way that I can control where CreateApplicationHost looks for my assembly? (Note that MyMarshaller class is conted in the same assembly as the above line of code)
The short answer is that it isn’t possible to do this, however the Cassini source revealed an alternative solution.
Update
The above link no longer works, however the CassiniDev project on CodePlex appears to be pretty close (possibly a derivative work) and contains the same solution.
The solution is to avoid using
CreateApplicationHostand "do it yourself" instead – in this case use reflection to create an instance of the internal "BuildManagerHost" type and call "RegisterAssembly", like so