Raymond Leung

一方净土,成就你我。 [ PowerBuilder8.0 + Informix ====>> C#/Java + Oracle10g/SQLServer2000/PostgreSQL8.0 ]
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

创建客户端的连接对象代码如下:
   HttpChannel channel = new HttpChannel();
   ChannelServices.RegisterChannel(channel);
   IRecordingsManager mgr = (IRecordingsManager) Activator.GetObject(typeof(IRecordingsManager),"http://localhost:7100/GetRecordingsManager.soap");

创建服务端的连接对象代码如下:
   HttpChannel channel = new HttpChannel(7100);
   ChannelServices.RegisterChannel(channel);
   RemotingConfiguration.RegisterWellKnownServiceType(typeof(RecordingsManager),"GetRecordingsManager.soap",WellKnownObjectMode.Singleton);

接口代码如下:
 public interface IRecordingsManager
 {
  DataSet GetRecordings();
  string RayReturn();
  bool SQL2DS(string selectCmd,ref DataSet dataSet,ref string returnString);
 }

远程对象代码如下:
 public class RecordingsManager : MarshalByRefObject, IRecordingsManager
 {
  public string RayReturn()
  {
      return "test";
  }
}



客户端运行后,报错的信息如下:
指定的 SOAPAction 无效:"http://schemas.microsoft.com/clr/nsassem/Ray.IRecordings
Manager/ServerUpTcp_Pos#RayReturn"

困惑中。。。。。。。
客户端指向地址明明是:http://localhost:7100/GetRecordingsManager.soap
为何会报成:http://schemas.microsoft.com/clr/nsassem/Ray.IRecordings
Manager/ServerUpTcp_Pos#RayReturn"






多种方法检测结果如下:
1。在服务器端启动后,IE直接输入http://localhost:7100/GetRecordingsManager.soap地址,IE报错如下
System.ArgumentNullException: 调用 DispatchChannelSink 之前没有反序列化任何消息。参数名: requestMsg at System.Runtime.Remoting.Channels.DispatchChannelSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream) at System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream) at System.Runtime.Remoting.Channels.SoapServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream) at System.Runtime.Remoting.MetadataServices.SdlChannelSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream) at System.Runtime.Remoting.Channels.Http.HttpServerTransportSink.ServiceRequest(Object state) at System.Runtime.Remoting.Channels.SocketHandler.ProcessRequestNow()

2。将上面的localhost换成IP地址输入http://10.50.7.131:7100/GetRecordingsManager.soap,IE报错如下:无法显示网页。