I'm probably missing something simple, but I was wondering if anyone has come across something like this in their own endeavors....
I have a Windows Service (named FileRequestService) that hosts a remotable class (FileRequest) from another assembly (ECCFileRequest). The Windows Service assembly name is ECCSIRequest, the class library with the remotable class is in an assembly named ECCFileRequest just to clarify. For some reason, I when I try to load remoting configuration (as in the code below), my clients cannot connect to the service: string cfg = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ECCSIRequest.exe.config"); RemotingConfiguration.Configure(cfg); However, if I programatically set the channel and use RegisterWellKnownServiceType (as in the following code), the clients can successfully connect. Again, I'm sure I'm missing something simple as far as defining the appropriate names or TCP "URL", but I'm just not seeing what it is. Here's the code that will work: _tcp = new TcpChannel(999); ChannelServices.RegisterChannel(_tcp); RemotingConfiguration.RegisterWellKnownServiceType(typeof(ECCFileRequest.Fil eRequest), "FileRequest", WellKnownObjectMode.SingleCall); I'm not sure what I'm missing. Any ideas? I included more detailed info (config files for client and server, and some code) below if anyone is up for taking a look. Thanks! The config file (ECCSIRequest.exe.config) for the Windows Service looks like this: <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.runtime.remoting> <application name="FileRequest"> <service> <wellknown mode="SingleCall" type="FileReqest, ECCFileRequest" objectUri="FileRequest" /> </service> <channels> <channel ref="tcp" port="999"> <clientProviders> <formatter ref="binary" /> </clientProviders> <serverProviders> <formatter ref="binary" /> </serverProviders> </channel> </channels> </application> </system.runtime.remoting> </configuration> The test client code looks like this: RemotingConfiguration.Configure("ConsoleApplication17.exe.config"); ECCFileRequest.FileRequest fReq = (FileRequest) RemotingServices.Connect(typeof(FileRequest), ConfigurationSettings.AppSettings["RequestURL"]); Console.WriteLine(fReq.GetXMLFileList(@"somefile.txt")); The test client config file looks like this: <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="RequestURL" value="tcp://localhost:999/FileRequest"/> </appSettings> <system.runtime.remoting> <application name="ConsoleApplication17"> <channels> <channel ref="tcp" port="0"> <clientProviders> <formatter ref="binary" /> </clientProviders> <serverProviders> <formatter ref="binary" /> </serverProviders> </channel> </channels> </application> </system.runtime.remoting> </configuration> The exception being thrown is: Cannot load type FileReqest, ECCFileRequest. Server stack trace: at System.Runtime.Remoting.RemotingConfigInfo.LoadType(String typeName, Strin g assemblyName) at System.Runtime.Remoting.RemotingConfigInfo.StartupWellKnownObject(String a smName, String svrTypeName, String URI, WellKnownObjectMode mode, Boolean fRepla ce) at System.Runtime.Remoting.RemotingConfigInfo.StartupWellKnownObject(String U RI) at System.Runtime.Remoting.RemotingConfigHandler.CreateWellKnownObject(String uri) at System.Runtime.Remoting.IdentityHolder.CasualResolveIdentity(String uri) at System.Runtime.Remoting.Messaging.MethodCall.ResolveType() at System.Runtime.Remoting.Messaging.MethodCall.ResolveMethod(Boolean bThrowI fNotResolved) at System.Runtime.Remoting.Messaging.MethodCall..ctor(Object handlerObject, B inaryMethodCallMessage smuggledMsg) at System.Runtime.Serialization.Formatters.Binary.BinaryMethodCall.ReadArray( Object[] callA, Object handlerObject) at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(He aderHandler handler, __BinaryParser serParser, Boolean fCheck, IMethodCallMessag e methodCallMessage) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (Stream serializationStream, HeaderHandler handler, Boolean fCheck, IMethodCallM essage methodCallMessage) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (Stream serializationStream, HeaderHandler handler) at System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryRequestMessa ge(String objectUri, Stream inputStream, Boolean bStrictBinding) at System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage( IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders reques tHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& respon seHeaders, Stream& responseStream) Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage req Msg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgDa ta, Int32 type) at ECCFileRequest.FileRequest.GetXMLFileList(String directory) in c:\document s and settings\zb5897\my documents\visual studio projects\eccfilerequest\filereq uest.cs:line 73 at ConsoleApplication17.Class1.Main(String[] args) in c:\documents and settin gs\zb5897\my documents\visual studio projects\consoleapplication17\class1.cs:lin e 31