调用wcf 基础连接已经关闭: 连接被意外关闭。

服务端的代码

var roles = from re in db.Roles   select re;                

return roles.ToList();

调试的时候能进入服务端代码,并能查到正确数据返回,数据量才二条,返回的数据大小不会超过默认设置的大小的。

但是在客户端就会报出异常,调用wcf 基础连接已经关闭: 连接被意外关闭。

未处理 System.ServiceModel.CommunicationException  Message=基础连接已经关闭: 连接被意外关闭。  Source=mscorlib  StackTrace:    Server stack trace:        在 System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)       在 System.ServiceModel.Channels.HttpChannelFactory.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)       在 Ship.PurviewWCFService.IPurviewService.GetAllRole()       在 Ship.PurviewWCFService.PurviewServiceClient.GetAllRole() 位置 D:\WorkSpace\Shipmvc\Ship\Ship\Service References\PurviewWCFService\Reference.cs:行号 780       在 Ship.Purview.PurivewMain.BindRole() 位置 D:\WorkSpace\Shipmvc\Ship\Ship\Purview\PurivewMain.cs:行号 381       在 Ship.Purview.PurivewMain.角色管理ToolStripMenuItem_Click(Object sender, EventArgs e) 位置 D:\WorkSpace\Shipmvc\Ship\Ship\Purview\PurivewMain.cs:行号 423       在 System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)       在 System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)       在 System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)       在 System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)       在 System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)       在 System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)       在 System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)       在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)       在 System.Windows.Forms.Control.WndProc(Message& m)       在 System.Windows.Forms.ScrollableControl.WndProc(Message& m)       在 System.Windows.Forms.ToolStrip.WndProc(Message& m)       在 System.Windows.Forms.MenuStrip.WndProc(Message& m)       在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)       在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)       在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)       在 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)       在 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)       在 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)       在 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)       在 System.Windows.Forms.Application.Run(Form mainForm)       在 Ship.Program.Main() 位置 D:\WorkSpace\Shipmvc\Ship\Ship\Program.cs:行号 19       在 System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)       在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)       在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()       在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)       在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)       在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)       在 System.Threading.ThreadHelper.ThreadStart()  InnerException: System.Net.WebException       Message=基础连接已经关闭: 连接被意外关闭。       Source=System       StackTrace:            在 System.Net.HttpWebRequest.GetResponse()            在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)       InnerException: 

请教园子里的兄弟,帮忙提示一下

白猪掌柜的
浏览 1441回答 8
8回答

天涯尽头无女友

客户端和服务器的数据契约引用不一致  而客户端又没有自动生成数据契约  

侃侃无极

帮你顶顶,怎么都木有人。。

一只甜甜圈

谢谢!

蛊毒传说

是的,和序列化相关,你可以通过wcf诊断工具来查找关键错误信息,从服务器的跟踪信息中应该可以看到序列化失败的异常。

翻翻过去那场雪

db.ObjectTrackingEnabled = false;就可以了。

慕侠2389804

哥们  你的这个问题解决没 

陪伴而非守候

你看上面我的回复
打开App,查看更多内容
随时随地看视频慕课网APP