为什么在WCF和ASP.NET Web应用程序中意外关闭了Connection?

时间:2017-06-25 17:33:33

标签: c# asp.net visual-studio linq wcf

这是我在Asp.net Web应用程序中使用的代码。它正在使用WCF服务,其中有一个函数receiveMsg()。

protected void Button2_Click(object sender, EventArgs e)
        {
            ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();

            //assigning the input values to the variables   


          **(This is Problem )** ArrayList messages =  new ArrayList(client.receiveMsg(ReceiverId_R.Text));

           receiveMsg_div.InnerHtml = "";
            foreach(var messg in messages)
            {
                //receiveMsg_div.InnerHtml += "<p>" + messg.sender_id + "send message" + messg.message + "</p>";
                receiveMsg_div.InnerHtml += "<p>" + messg + "send message"+ "</p>";
            }
        }

问题在于 -

ArrayList messages =  new ArrayList(client.receiveMsg(ReceiverId_R.Text));

receiveMsg()看起来像 -

public ArrayList receiveMsg(String receiverId)
        {
            XDocument xdoc = XDocument.Load(@"C:\Users\abhinav\documents\visual studio 2010\Projects\WcfService1\WcfService1\Messages.xml");
            //XDocument xdoc = XDocument.Load(@"~/App_Data/Messages.xml");
            ArrayList messages = new ArrayList();

            var elements = from item in xdoc.Descendants("Messages").Descendants("Message")
                           where item.Element("ReceiverId").Value == receiverId
                           select new{ msgtxt = item.Element("MessageText").Value, sendid = item.Element("SenderId").Value };
            foreach (var element in elements)
            {
                Message msg = new Message();
                msg.sender_Id = element.sendid;
                msg.message = element.msgtxt;
                messages.Add(msg);
            }
            return messages;
        }

我做错了什么?是Linq还是WCF设置等?

已编辑 -

这是我在IService.cs中添加的 -

[DataContract]
    public class Message
    {
        [DataMember]
        public String sender_Id{get; set;}
        [DataMember]
        public String message { get; set; }
    }

那么我想要做的是 -

XML文件包含大量消息。我想检索与接收者ID相对应的所有消息和发件人ID。为此,我创建了一个Message类,其中包含发件人ID和消息作为成员。我想创建一个消息类对象的数组列表,并将其返回给客户端。

堆栈追踪 -

Communication ExceptionSystem.ServiceModel.CommunicationException: The underlying connection was closed: The connection was closed unexpectedly. ---> System.Net.WebException: The underlying connection was closed: The connection was closed unexpectedly.
   at System.Net.HttpWebRequest.GetResponse()
   at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
   --- End of inner exception stack trace ---

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

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at wcf_web_app.ServiceReference1.IService1.receiveMsg(String receiverId)
   at wcf_web_app.ServiceReference1.Service1Client.receiveMsg(String receiverId) in C:\Users\abhinav\documents\visual studio 2010\Projects\wcf_web_app\wcf_web_app\Service References\ServiceReference1\Reference.cs:line 136
   at wcf_web_app._Default.Button2_Click(Object sender, EventArgs e) in C:\Users\abhinav\documents\visual studio 2010\Projects\wcf_web_app\wcf_web_app\Default.aspx.cs:line 43

我觉得制作Message Class Objects的ArrayList并返回它有一些问题。什么?

0 个答案:

没有答案