我用的是TCP协议,在局域网内访问没任何问题,但在外网就访问不了,但是用telnet命令内查看外网的IP和Remoting服务端的端口又是通的这是什么原因呢? 请高手指点

解决方案 »

  1.   

    改成HTTP协议后报这个异常:
    System.ArgumentNullException: ?????? DispatchChannelSink ???????????????????????????????????????
    ?????????: requestMsg
       ??? System.Runtime.Remoting.Channels.DispatchChannelSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)
       ??? System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)
       ??? System.Runtime.Remoting.Channels.Http.HttpServerTransportSink.ServiceRequest(Object state)
       ??? System.Runtime.Remoting.Channels.SocketHandler.ProcessRequestNow()
    这是什么原因???
      

  2.   

    服务端代码如下:
    ********************************************************
     BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider();
     serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
     BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider();
     IDictionary props = new Hashtable();
     props["port"] = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["Port"]);
     HttpChannel httpChannel = new HttpChannel(props, clientProv, serverProv);
     ChannelServices.RegisterChannel(httpChannel, false);
     RemotingConfiguration.RegisterWellKnownServiceType(typeof(Remote), "Server",  WellKnownObjectMode.Singleton);
     RemotingConfiguration.CustomErrorsMode = CustomErrorsModes.Off;
    **********************************************************
    改成这样就没有异常问题:
    ********************************************************
    HttpChannel  httpChannel = new HttpChannel(Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["Port"]));
                System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(httpChannel, false);
                RemotingConfiguration.RegisterWellKnownServiceType(typeof(Remote), "Server", WellKnownObjectMode.Singleton);
                RemotingConfiguration.CustomErrorsMode = CustomErrorsModes.Off;
    *********************************************************
    但是安全级别有出问题了
      

  3.   

    http://www.cnblogs.com/zhengyun_ustc/archive/2006/06/09/remoting_InvalidCredentialException.html
      

  4.   

    换成HTTP后还是不通,有没有高人知道解决了再加100分
      

  5.   

    高手告诉我,你需要监听端口,再增加Credentials,你的Socket没办法recieve任何信息,能不能给源码,这样才能帮你调试,如果不方便也没有关系。
      

  6.   

    首先外网应该用http,另外要用双向信道,我之前也遇到过跟你一样的问题,是客户端没有注册信道的原因
      

  7.   


     看下 防火墙中的remoting 是不是被禁用了