zoukankan      html  css  js  c++  java
  • 接收对 http://192.168.1.18:8001/ObtainData/Service 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。


    [2015/8/5 19:28:49]
    错误信息:接收对 http://192.168.1.18:8001/ObtainData/Service 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。有关详细信息,请参见服务器日志。
    异常类型:System.ServiceModel.CommunicationException
    程序集:mscorlib
    方法:Void HandleReturnMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessage)
    跟踪栈信息:

    Server stack trace:
    在 System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)
    在 System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
    在 System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
    在 System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
    在 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
    在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
    在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

    Exception rethrown at [0]:
    在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
    在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
    在 ZBMServiceContract.IObtainData.SelectProjectByUserName(String userName)
    在 Client.ObtainDataClient.SelectProjectByUserName(String userName) 位置 d:ColleagueBaiYongshengServerClientObtainDataClient.cs:行号 41
    在 Client.Program.ObtainData() 位置 d:ColleagueBaiYongshengServerClientProgram.cs:行号 61
    在 Client.Program.Main(String[] args) 位置 d:ColleagueBaiYongshengServerClientProgram.cs:行号 27


    [2015/8/5 19:28:49]
    错误信息:基础连接已经关闭: 接收时发生错误。
    异常类型:System.Net.WebException
    程序集:System
    方法:System.Net.WebResponse GetResponse()
    跟踪栈信息:
    在 System.Net.HttpWebRequest.GetResponse()
    在 System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)


    [2015/8/5 19:28:49]
    错误信息:无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。
    异常类型:System.IO.IOException
    程序集:System
    方法:Int32 Read(Byte[], Int32, Int32)
    跟踪栈信息:
    在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
    在 System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)
    在 System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead)


    [2015/8/5 19:28:49]
    错误信息:远程主机强迫关闭了一个现有的连接。
    异常类型:System.Net.Sockets.SocketException
    程序集:System
    方法:Int32 Receive(Byte[], Int32, Int32, System.Net.Sockets.SocketFlags)
    跟踪栈信息:
    在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
    在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)

    这个错误,排查了好久。

    http://www.cnblogs.com/chucklu/p/4708177.html     Service Trace Viewer Tool (SvcTraceViewer.exe)

    最后发现是DataTable没有TableName导致的

    无法序列化 DataTable。未设置 DataTable 名称。

     public DataTable SelectProjectByUserName(string userName)
            {
                Console.WriteLine("客户端开始调用SelectProjectByUserName");
                DataTable dataTable = new DataTable();
                dataTable.TableName = "dataTable";
                try
                {
                    dataTable = DAOManager.Instance.SelectProjectByUserName(userName);
                }
                catch (Exception ex)
                {
                    ExceptionLog.Instance.WriteLog(ex, LogType.UI);
                } 
                Console.WriteLine("客户端结束调用SelectProjectByUserName");
                return dataTable;
            }

    这段代码把我坑了。

    DAOManager.Instance.SelectProjectByUserName返回了一个全新的dataTable

    导致之前的赋值完全白费力的。

    代码修改如下,始终确保DataTable有名字

      public DataTable SelectProjectByUserName(string userName)
            {
                DataTable dataTable = null;
                try
                {
                    dataTable = DAOManager.Instance.SelectProjectByUserName(userName);
                }
                catch (Exception ex)
                {
                    ExceptionLog.Instance.WriteLog(ex, LogType.UI);
                    dataTable = new DataTable();
                }
                dataTable.TableName = "DataTable";
                return dataTable;
            }

    这里希望函数返回值始终不为null。

    有点多余了

  • 相关阅读:
    文件共享服务之FTP
    通过rsycn实现数据同步
    rsync命令的使用
    Linux之ssh服务
    跳板机的工作原理和简单的跳板机实现
    Linux进程管理
    javaweb图片上传 tomcat重新部署 图片消失
    KindEditor 上传文件
    PL/SQL通过修改配置文件的方式实现数据库的连接
    PermGen space
  • 原文地址:https://www.cnblogs.com/chucklu/p/4708200.html
Copyright © 2011-2022 走看看