Comments inline > Hi all, > I fixed the HttpRemotingHandlerFactory, HttpRemotingHandler, > HttpServerChannel classes to > work properly with a WebServer hosting. > The HttpRemotingHandlerFactory should first configure the remoting > infrastructure from the Web.config. > In case of appropriate Http channel is not registered, the > HttpRemotingHandlerFactory should create > such one and register with ChannelServices. > In the HttpRemotingHandler I added code to remove extra '/' character > from the URI. > I also added the code to send response headers. > The HttpServerChannel should initialize the port field to the value > differ from 0, because it > requires different handling if the user set port to 0 or not. If the > port is not changed by the user, > the HttpServerChannel should not start the listener. > In the HttpServerTransportSink.ServiceRequest I handled the case when > exception was thrown during request > dispatching (for example, during deserialization of the message). In > this case the response was not sent at all > and the client was hang. > The HttpClientChannel contains only TARGET_JVM change. > > Please, confirm the patches. > > Thanks, > Svetlana > > Index: HttpRemotingHandlerFactory.cs > =================================================================== > --- HttpRemotingHandlerFactory.cs (revision 52268) > +++ HttpRemotingHandlerFactory.cs (working copy) > @@ -62,27 +62,54 @@ > { > if (webConfigLoaded) return; > > + try > + { > + //Configure Web.config > + String cfg = > AppDomain.CurrentDomain.SetupInformation.ConfigurationFile; > + > System.Runtime.Remoting.RemotingConfiguration.Configure(cfg); > + } > + catch(Exception e) > + { > +#if DEBUG > + Console.WriteLine("ERROR in > RemotingConfiguration.Configure() {0},{1}",e.GetType(), e.Message); > +#endif > + } > +
Remoting configuration is being loaded in WebConfigurationSettings.cs, so it is not necessary to do it here. Just remove: #if !TARGET_JVM // no remoting support yet in Grasshopper RemotingConfiguration.Configure (wcfile); #endif in that file (it's in System.Web). > + > + if (chook == null) > + { > + HttpChannel chan = new > HttpChannel(); > + ChannelServices.RegisterChannel(chan); > + chook = chan; > + } What is this needed for? > > Index: HttpServerChannel.cs > =================================================================== > --- HttpServerChannel.cs (revision 52268) > +++ HttpServerChannel.cs (working copy) > @@ -58,7 +58,7 @@ > private int _channelPriority = 1; // > priority of channel (default=1) > private String _channelName = "http"; // > channel name > private String _machineName = null; // > machine name > - private int _port = 0; // > port to listen on > + private int _port = -1; // Why this? isn't the default behavior of the HttpChannel to listen in any available port in MS.NET? > Index: HttpClientChannel.cs > =================================================================== > --- HttpClientChannel.cs (revision 52268) > +++ HttpClientChannel.cs (working copy) > @@ -589,7 +589,13 @@ > catch (WebException ex) > { > httpWebResponse = ex.Response as > HttpWebResponse; > - if (httpWebResponse == null || > httpWebResponse.StatusCode == HttpStatusCode.InternalServerError) > throw ex; > + if (httpWebResponse == null || > +#if !TARGET_JVM > + httpWebResponse.StatusCode == > HttpStatusCode.InternalServerError) > +#else > + httpWebResponse.StatusCode < > HttpStatusCode.InternalServerError) > +#endif Why is this needed? Thanks, Lluis. _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list