none
使用System.Runtime.Remoting取得遠端DB的問題 RRS feed

  • 一般討論

  • 請問

    因為小弟要寫個不透過直接連DB的方式取得資料

    所以嘗試寫了一下程式

    假設

    Server端ip為192.168.1.111

    使用者端ip為192.168.1.100

     

    server端

    ====================================================

     string strConfigFile =
      Dir + "\\Serverexe.Config";
     RemotingConfiguration.Configure(strConfigFile,false);
    
    

     

    Serverexe.Config

    ==================================================

    <configuration>
    <system.runtime.remoting>
    <application name="LinkDB">
    <service>
    <wellknown mode="Singleton"
    type="LinkDB.Data, LinkDB"
    objectUri="Data.soap" />
    </service>
    <channels>
    <channel ref="http" port="8888"/>
    /channels>
    </application>
    </system.runtime.remoting>
    </configuration>
    

     

    LINKDB.dll

    ==============================================

     public DataTable GetData(string SQL)
     {
     DataTable dt;
     try
     {
     using (SQLLibrary.SQL A = new SQLLibrary.SQL())
     {
      A.SQLConn("127.0.0.1", "xxxx", "xxxx", "xxxx", 50, 50);
      dt = A.GetTableSQL_AwaysOpen(SQL);
     }
     }
     catch (Exception ex)
     {
     throw new Exception(ex.ToString());
     }
    
     return dt;
     }
    
    

    用戶端

    =========================================================

    HttpChannel ch = new HttpChannel(8087);
    ChannelServices.RegisterChannel(ch, false);
    
    DataTable Getserver = ((Data)Activator.GetObject(typeof(Data), "http://192.168.1.111:8888/Data.soap")).GetData("select * from employee");
    

     

     

     

    LINKDB.dll我在server與用戶端的程式接有放置

    我把LINKDB.dll的DB位置寫成127.0.0.1照理來說應該是取得SERVER端的DB,然後直接回傳DATATABLE給我

    可是不知道為何他卻是抓使用者端的DB

    想請教這是什麼原因呢

    2010年12月22日 上午 09:13

所有回覆

  • client端刪掉 LINKDB.dll看會如何?
    2010年12月22日 下午 12:52
  • 沒辦法耶

    如果刪掉的話

    DataTable Getserver = ((Data)Activator.GetObject(typeof(Data), "http://192.168.1.111:8888/Data.soap")).GetData("select * from employee");

    typeof(Data) <----這個DATA是DLL裡面的東西

    這行就不成立了

    2010年12月23日 上午 12:43
  • 應該是用戶端也用LINKDB.dll, 而LINKDB.dll中用127.0.0.1的關係, 您可以將

    A.SQLConn("127.0.0.1", "xxxx", "xxxx", "xxxx", 50, 50);

    改成

    A.SQLConn("192.168.1.111", "xxxx", "xxxx", "xxxx", 50, 50);

    看看~

    2010年12月23日 上午 02:22