Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by [EMAIL PROTECTED]

http://bugzilla.ximian.com/show_bug.cgi?id=76454

--- shadow/76454        2005-10-16 16:28:31.000000000 -0400
+++ shadow/76454.tmp.9190       2005-10-16 16:45:41.000000000 -0400
@@ -1,14 +1,14 @@
 Bug#: 76454
 Product: Mono: Class Libraries
 Version: 1.1
-OS: 
+OS: unknown
 OS Details: gentoo 64bit
 Status: NEW   
 Resolution: 
-Severity: 
+Severity: Unknown
 Priority: Wishlist
 Component: System
 AssignedTo: [EMAIL PROTECTED]                            
 ReportedBy: [EMAIL PROTECTED]               
 QAContact: [EMAIL PROTECTED]
 TargetMilestone: ---
@@ -48,6 +48,296 @@
 (System.Runtime.Remoting.Proxies.RealProxy rp, IMessage msg,
 System.Exception exc, System.Object[] out_args)
 
 
 I tried registering a channel without checking if one is registered and the
 call just gave me an exception saying a channel was already registered.
+
+------- Additional Comments From [EMAIL PROTECTED]  2005-10-16 16:45 -------
+I have created an example that works on windows ms.net but not on mono
+on Linux, the longer exception is copied below as well as the code,
+also this example fails on the first call. 
+
+Exception:
+=====================================================
+<?xml version="1.0" encoding="utf-8"?>
+<string
+xmlns="http://tempuri.org/";>System.Runtime.Remoting.RemotingException:
+Cannot create
+      channel sink to connect to URL
+8b060dc9_4b4a_4907_aeba_855302d7b6e9/-83389294_4.rem. An
+      appropriate channel has probably not been registered.
+
+Server stack trace: 
+in <0x000da>
+System.Runtime.Remoting.RemotingServices:GetClientChannelSinkChain (
+     System.String url, System.Object channelData, System.String
+objectUri)
+in <0x000cb>
+System.Runtime.Remoting.RemotingServices:GetOrCreateClientIdentity (
+     System.Runtime.Remoting.ObjRef objRef, System.Type proxyType,
+System.Object clientProxy)
+in <0x00028> System.Runtime.Remoting.RemotingServices:GetRemoteObject (
+     System.Runtime.Remoting.ObjRef objRef, System.Type proxyType)
+in <0x00075>
+System.Runtime.Remoting.RemotingServices:GetProxyForRemoteObject (
+     System.Runtime.Remoting.ObjRef objref, System.Type classToProxy)
+in <0x0014f> System.Runtime.Remoting.RemotingServices:Unmarshal (
+     System.Runtime.Remoting.ObjRef objref, Boolean fRefine)
+in <0x00019> System.Runtime.Remoting.RemotingServices:Unmarshal (
+     System.Runtime.Remoting.ObjRef objref)
+in <0x0002a> System.Runtime.Remoting.ObjRef:GetRealObject
+(StreamingContext sc)
+in <0x00548> System.Runtime.Serialization.ObjectRecord:LoadData (
+     System.Runtime.Serialization.ObjectManager manager,
+ISurrogateSelector selector,
+      StreamingContext context)
+in <0x0017b> System.Runtime.Serialization.ObjectManager:DoFixups ()
+in <0x00019>
+System.Runtime.Serialization.Formatters.Soap.SoapReader:get_TopObject ()
+in <0x00471>
+System.Runtime.Serialization.Formatters.Soap.SoapReader:Deserialize (
+     System.IO.Stream inStream, ISoapMessage soapMessage)
+in <0x000c3>
+System.Runtime.Serialization.Formatters.Soap.SoapFormatter:Deserialize (
+     System.IO.Stream serializationStream,
+System.Runtime.Remoting.Messaging.HeaderHandler
+      handler)
+in <0x00026>
+System.Runtime.Serialization.Formatters.Soap.SoapFormatter:Deserialize (
+     System.IO.Stream serializationStream)
+in <0x00247>
+System.Runtime.Remoting.Channels.SoapServerFormatterSink:ProcessMessage (
+     IServerChannelSinkStack sinkStack, IMessage requestMsg,
+ITransportHeaders requestHeaders,
+      System.IO.Stream requestStream, IMessage responseMsg,
+ITransportHeaders responseHeaders,
+      System.IO.Stream responseStream)
+
+Exception rethrown at [0]: 
+
+in <0x009a8> System.Runtime.Remoting.Proxies.RealProxy:PrivateInvoke (
+     System.Runtime.Remoting.Proxies.RealProxy rp, IMessage msg,
+System.Exception exc,
+      System.Object[] out_args)</string>
+=====================================================
+
+Shared Library:
+=====================================================
+using System;
+
+namespace RemInterface
+{
+       /// <summary>
+       /// Summary description for Class1.
+       /// </summary>
+       public interface ITest
+       {
+               String Str{get;set;}
+               IClientTest ClientTest{get;set;}
+       }
+       //was an interface before thats why its called IClientTest, then I
+got lazy.
+       public class IClientTest:System.MarshalByRefObject
+       {
+               private String str = null;
+               public String Str
+               {
+                       get
+                       {
+                               Console.WriteLine("Client Str value retrieved");
+                               return str;
+                       }
+                       set
+                       {
+                               Console.WriteLine("Client Str value set");
+                               str = value;
+                       }
+               }
+
+       }
+}
+
+=====================================================
+
+Remoting Server code:
+=====================================================
+using System;
+using System.Runtime;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Channels;
+using System.Runtime.Remoting.Channels.Http;
+using System.Collections;
+
+namespace RemServer
+{
+       /// <summary>
+       /// Summary description for Class1.
+       /// </summary>
+       class Class1
+       {
+               /// <summary>
+               /// The main entry point for the application.
+               /// </summary>
+               [STAThread]
+               static void Main(string[] args)
+               {
+                       IDictionary props = new Hashtable(); 
+                       props["typeFilterLevel"] = "Full"; 
+                       SoapServerFormatterSinkProvider formatterProvider = new
+SoapServerFormatterSinkProvider(props,null);
+                       SoapClientFormatterSinkProvider clientProv = new
+SoapClientFormatterSinkProvider();
+                       props["port"] = 5050;
+                       HttpChannel channel = new
+HttpChannel(props,clientProv,formatterProvider);
+                       ChannelServices.RegisterChannel(channel);
+                       Test t = new Test();
+                       t.Str = "initialized";
+                       RemotingServices.Marshal(t,"test");
+                       Console.WriteLine("Hit enter to end");
+                       Console.ReadLine();
+
+               }
+       }
+       public class Test: System.MarshalByRefObject,RemInterface.ITest
+       {
+               private RemInterface.IClientTest client;
+               private String str = null;
+               public String Str
+               {
+                       get
+                       {
+                               Console.WriteLine("Str value retrieved");
+                               return str;
+                       }
+                       set
+                       {Console.WriteLine("Str value set");
+                               str = value;
+                       }
+               }
+               public RemInterface.IClientTest ClientTest
+               {
+                       get
+                       {
+                               Console.WriteLine("Client test retrieve.");
+                               return client;
+                       }
+                       set
+                       {
+                               Console.WriteLine("Client test set");
+                               client = value;
+                       }
+               }
+       }
+}
+
+=====================================================
+
+Remoting Client (webservice)
+=====================================================
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Data;
+using System.Diagnostics;
+using System.Web;
+using System.Web.Services;
+
+
+using System.Runtime;
+using System.Runtime.Remoting;
+using System.Runtime.Remoting.Channels;
+using System.Runtime.Remoting.Channels.Http;
+
+
+namespace WebService2
+{
+       /// <summary>
+       /// Summary description for Service1.
+       /// </summary>
+       public class Service1 : System.Web.Services.WebService
+       {
+               public Service1()
+               {
+                       //CODEGEN: This call is required by the ASP.NET Web 
Services Designer
+                       InitializeComponent();
+               }
+
+               #region Component Designer generated code
+               
+               //Required by the Web Services Designer 
+               private IContainer components = null;
+                               
+               /// <summary>
+               /// Required method for Designer support - do not modify
+               /// the contents of this method with the code editor.
+               /// </summary>
+               private void InitializeComponent()
+               {
+               }
+
+               /// <summary>
+               /// Clean up any resources being used.
+               /// </summary>
+               protected override void Dispose( bool disposing )
+               {
+                       if(disposing && components != null)
+                       {
+                               components.Dispose();
+                       }
+                       base.Dispose(disposing);                
+               }
+               
+               #endregion
+
+               // WEB SERVICE EXAMPLE
+               // The HelloWorld() example service returns the string Hello 
World
+               // To build, uncomment the following lines then save and build 
the
+project
+               // To test this web service, press F5
+
+               [WebMethod]
+               public String Test()
+               {
+
+                       try
+                       {
+                               if (ChannelServices.RegisteredChannels.Length 
<=0)
+                               {
+                                       IDictionary props = new Hashtable(); 
+                                       props["typeFilterLevel"] = "Full"; 
+                                       SoapServerFormatterSinkProvider 
formatterProvider = new
+SoapServerFormatterSinkProvider(props,null);
+                                       SoapClientFormatterSinkProvider 
clientProv = new
+SoapClientFormatterSinkProvider();
+                                       props["port"] = 5051;
+                                       HttpChannel channel = new
+HttpChannel(props,clientProv,formatterProvider);
+                                       
ChannelServices.RegisterChannel(channel);
+                               }
+                               RemInterface.ITest test =
+(RemInterface.ITest)Activator.GetObject(typeof(RemInterface.ITest),"http://127.0.0.1:5050/test";);
+                       
+                               test.Str = "value set by client";
+                               ClientTest clnTest = new ClientTest();
+                               clnTest.Str = "This object was created on the 
client.";
+                               test.ClientTest = clnTest;
+                       
+                       }
+                       catch(Exception ex)
+                       {
+                               return ex.ToString();
+                       }
+                       return "Worked";
+
+               }
+       }
+       public class ClientTest: RemInterface.IClientTest
+       {
+               private String nothing = "nothing";     
+               //private String test = null;
+       }
+}
+
+=====================================================
+
_______________________________________________
mono-bugs maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-bugs

Reply via email to