2010-02-18 55 views
0

我正在學習如何在.NET中使用Remoting。我已經構建了一個小應用程序,它可以完成基本的Hello World工作。 爲RemoteObject的代碼是:C#中的遠程處理不工作

public class MyRemoteObjectClass:MarshalByRefObject 
    { 
     public MyRemoteObjectClass() 
     { 
      Console.WriteLine("Remote object created"); 
     } 
     //return message reply 
     public String ReplyMessage(String msg) 
     { 
      Console.WriteLine("Client : " + msg);//print given message on console 
      return "Server : Yeah! I'm here"; 
     } 
    } 

服務器類的代碼是:

class MyServerClass 
    { 
     public MyServerClass() 
     { 
     } 
     static void Main(string[] args) 
     { 
      RemotingConfiguration.Configure("RemotingSettings_Server.xml",false); 
      Console.WriteLine("server activated"); 
      Console.ReadLine(); 
     } 
    } 

客戶端類的源代碼是:

class MyClientAppClass 
    { 
     static void Main(string[] args) 
     { 
      RemotingConfiguration.Configure("ClientSettings.xml",false); 
      Console.WriteLine("Settings read successfully"); 
      MyRemoteObjectClass remObject = (MyRemoteObjectClass)Activator.GetObject(typeof(MyRemoteObject.MyRemoteObjectClass),"http://localhost:8989/MyRemoteObjectClass",WellKnownObjectMode.Singleton); 
      if (remObject == null) 
       Console.WriteLine("cannot locate server"); 
      else 
      { String res = remObject.ReplyMessage("You there?"); Console.WriteLine(res); Console.ReadLine(); } 

     } 
    } 

服務器和客戶端我的配置文件分別爲:

<configuration> 
    <system.runtime.remoting> 
     <application> 
     <service> 
      <wellknown 
       mode="Singleton" 
       type="MyRemoteObject.MyRemoteObjectClass, MyRemoteObjectClass" 
       objectUri="MyRemoteObjectClass.rem" 
      /> 
     </service> 
     <channels> 
      <channel ref="http" port="8989"/> 
     </channels> 
     </application> 
    </system.runtime.remoting> 
</configuration> 

客戶端:

<configuration> 
    <system.runtime.remoting> 
    <application> 
     <client> 
     <wellknown 
      type="MyRemoteObject.MyRemoteObjectClass, MyRemoteObjectClass" 
      url="http://localhost:8989/MyRemoteObjectClass.rem" 
      /> 
     </client> 
    </application> 
    </system.runtime.remoting> 
</configuration> 

我第一次建立了DLL的遠程對象,複製在服務器和客戶端的exe位置的DLL。然後運行服務器,然後運行客戶端。服務器被實例化,但客戶端程序會引發異常,如「遠程處理異常:請求的服務未找到」。

請幫我解決這個問題,並且可能是清楚瞭解遠程處理概念的好地方。

謝謝, Rakesh。

+1

遠程處理非常困難,而且記錄錯誤。跳過遠程處理並直接轉到WCF。 – Will 2010-06-19 16:21:38

回答

0

查看您的配置文件 - 區分大小寫。例如,「objecturi」應該是 「objectUri」。

+0

嗨阿隆,我已經添加我的配置文件也是我的問題。根據你所說的話,這似乎是正確的。 – 2010-02-18 06:18:16

0

取消激活防火牆。如果它能夠正常工作,請重新激活防火牆並添加適當的例外。