WCF中使用NHibernate存储数据问题

问题描述

建立了一些实体对象,封装好了业务逻辑,并将其发布为WCF服务,如果将其在代码中启动服务,编写测试用例测试,就会报:Test'WCFdb.WCFTest.TestUserInfoSVC.TestSaveUser'failed:System.ServiceModel.CommunicationException:接收对http://localhost:2251/UserService.svc的HTTP响应时发生错误。这可能是由于服务终结点绑定未使用HTTP协议造成的。这还可能是由于服务器中止了HTTP请求上下文(可能由于服务关闭)所致。有关详细信息,请参阅服务器日志。---->System.Net.WebException:基础连接已经关闭:接收时发生错误。---->System.IO.IOException:无法从传输连接中读取数据:远程主机强迫关闭了一个现有的连接。。---->System.Net.Sockets.SocketException:远程主机强迫关闭了一个现有的连接。Serverstacktrace:在System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebExceptionwebException,HttpWebRequestrequest,HttpAbortReasonabortReason)在System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpantimeout)在System.ServiceModel.Channels.RequestChannel.Request(Messagemessage,TimeSpantimeout)在System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Messagemessage,TimeSpantimeout)在System.ServiceModel.Channels.ServiceChannel.Call(Stringaction,Booleanoneway,ProxyOperationRuntimeoperation,Object[]ins,Object[]outs,TimeSpantimeout)在System.ServiceModel.Channels.ServiceChannel.Call(Stringaction,Booleanoneway,ProxyOperationRuntimeoperation,Object[]ins,Object[]outs)在System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessagemethodCall,ProxyOperationRuntimeoperation)在System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessagemessage)Exceptionrethrownat[0]:在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessagereqMsg,IMessageretMsg)在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32type)在WCFdb.WCFTest.ServiceReference1.IUserService.SaveUser(UserInfouser)ServiceReferencesServiceReference1Reference.cs(148,0):在WCFdb.WCFTest.ServiceReference1.UserServiceClient.SaveUser(UserInfouser)E:ProgramFilesvsworkspaceWCFDbStoreServiceWCFdb.WCFTestTestUserInfoSVC.cs(25,0):在WCFdb.WCFTest.TestUserInfoSVC.TestSaveUser()--WebException在System.Net.HttpWebRequest.GetResponse()在System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpantimeout)--IOException在System.Net.Sockets.NetworkStream.Read(Byte[]buffer,Int32offset,Int32size)在System.Net.PooledStream.Read(Byte[]buffer,Int32offset,Int32size)在System.Net.Connection.SyncRead(HttpWebRequestrequest,BooleanuserRetrievedStream,BooleanprobeRead)--SocketException在System.Net.Sockets.Socket.Receive(Byte[]buffer,Int32offset,Int32size,SocketFlagssocketFlags)在System.Net.Sockets.NetworkStream.Read(Byte[]buffer,Int32offset,Int32size)

如果将其部署到IIS服务器,用相同的测试代码,报错:Test'WCFdb.WCFTest.TestUserInfoSVC.TestSaveUser'failed:System.ServiceModel.ProtocolException:响应消息的内容类型text/html;charset=utf-8与绑定(text/xml;charset=utf-8)的内容类型不匹配。如果使用自定义编码器,请确保正确实现IsContentTypeSupported方法。响应的前804个字节为:“<?xmlversion="1.0"?><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.1//EN""http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>服务器不可用</title></head><body><h1><spanstyle="font-family:Verdana;color:#ff3300">服务器应用程序不可用</span></h1><p><spanstyle="font-family:Verdana;">您试图在此Web服务器上访问的Web应用程序当前不可用。请点击Web浏览器中的“刷新”按钮重试您的请求。</span></p><p><b>管理员注意事项:</b>详述此特定请求失败原因的错误消息可在Web服务器的系统事件日志中找到。请检查此日志项以查明导致该错误发生的原因。</p></body></html>”。---->System.Net.WebException:远程服务器返回错误:(500)内部服务器错误。Serverstacktrace:在System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequestrequest,HttpWebResponseresponse,HttpChannelFactoryfactory,WebExceptionresponseException)在System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpantimeout)在System.ServiceModel.Channels.RequestChannel.Request(Messagemessage,TimeSpantimeout)在System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Messagemessage,TimeSpantimeout)在System.ServiceModel.Channels.ServiceChannel.Call(Stringaction,Booleanoneway,ProxyOperationRuntimeoperation,Object[]ins,Object[]outs,TimeSpantimeout)在System.ServiceModel.Channels.ServiceChannel.Call(Stringaction,Booleanoneway,ProxyOperationRuntimeoperation,Object[]ins,Object[]outs)在System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessagemethodCall,ProxyOperationRuntimeoperation)在System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessagemessage)Exceptionrethrownat[0]:在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessagereqMsg,IMessageretMsg)在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32type)在WCFdb.WCFTest.UserInfoSvc.IUserService.SaveUser(UserInfouser)ServiceReferencesUserInfoSvcReference.cs(148,0):在WCFdb.WCFTest.UserInfoSvc.UserServiceClient.SaveUser(UserInfouser)E:ProgramFilesvsworkspaceWCFDbStoreServiceWCFdb.WCFTestTestUserInfoSVC.cs(25,0):在WCFdb.WCFTest.TestUserInfoSVC.TestSaveUser()--WebException在System.Net.HttpWebRequest.GetResponse()在System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpantimeout)0passed,1failed,0skipped,took6.47seconds(NUnit2.5.5).

请问高手这是什么原因多谢了

解决方案

解决方案二:
有人知道原因吗
解决方案三:
找到原因了吗?求解答呀。。。
解决方案四:
懒加载问题,我在搭建这个框架时,遇到过,禁止懒加载
解决方案五:
请问如何解决的,我设置了懒加载还是不行的。
解决方案六:
WCF出现这种错误,基本都是因为服务端处理请求的时候,出现了错误。而你又没有启用输出错误。这时候,处理程序会直接关闭连接。调试一下,你的代码,不就知道什么原因了吗???

时间: 2024-09-19 07:51:37

WCF中使用NHibernate存储数据问题的相关文章

详解iOS使用Keychain中的kSecClassGenericPassword存储数据_IOS

iOS设备中的Keychain是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用户名,密码,网络密码,认证令牌.苹果自己用keychain来保存Wi-Fi网络密码,VPN凭证等等.它是一个sqlite数据库,位于/private/var/Keychains/keychain-2.db,其保存的所有数据都是加密过的.模拟器下keychain文件路径:~/Library/Application Support/iPhone Simulator/4.3/Library/Keychains ke

简介Android应用中sharedPreferences类存储数据的用法_Android

在Android开发中,经常会遇到这样一种情况,即需要将用户偏好设置(如用户偏好的app色彩主题).与特定登录用户相关的设置(如不同登陆用户的偏好).整个app的生命周期内的设置(如首次登陆显示介绍页)存储在用户本地,那么首先考虑使用sharedPreferences.这是Android中专门用来存储轻量级键值对数据的类,会在本地以xml文件形式存储. 一. 运行机制接口:SharedPreferencesImpl在该接口中,定义了一个Editor接口.一个edit方法.多个get方法.一个监听

简介Android应用中sharedPreferences类存储数据的用法

在Android开发中,经常会遇到这样一种情况,即需要将用户偏好设置(如用户偏好的app色彩主题).与特定登录用户相关的设置(如不同登陆用户的偏好).整个app的生命周期内的设置(如首次登陆显示介绍页)存储在用户本地,那么首先考虑使用sharedPreferences.这是Android中专门用来存储轻量级键值对数据的类,会在本地以xml文件形式存储. 一. 运行机制 接口:SharedPreferencesImpl在该接口中,定义了一个Editor接口.一个edit方法.多个get方法.一个监

灾难恢复中如何处理云存储数据

在研究如何利用云来确保数据安全以备灾难恢复之用时,我发现了一个有趣的问题:一旦数据被创造出来之后,你是如何去处理它的?你如何重新获取那些数据,以便能够将它们用于灾难恢复? 我想,也许很多人都没有考虑过这个有趣的问题,但我们在规划灾难恢复的过程中,在考虑保证数据安全的时候确实需要考虑这个问题.根据灾难的不同,这个问题的答案也不同. 在数据中心完好无损的情况下,比如发生停电事故且停电的时间超过了应急发电机的持续时间,那么你可能只需要从云中恢复那些数据,然后重新运行它们即可. 但是如果需要你动用储存在

GridView中使用DataKeyNames存储数据键值

很多时候我们需要在GridView的RowCommand之类的事件中需要获取当前行的一些关联性的数据值.但这些数据值又没有直接体现在GridView的列中.这个时候该怎么办呢? 有同学喜欢用隐藏列的方式,把需要使用但不显示的字段绑定到此列上,同时设置列宽为0或不显示,使用时可以用常规的取某行某列的方式来获取数据. 但是在Framework 2.0中,我们可以采用DataKeyNames的方式来获取此类数据. 代码示例: (前台)         <asp:GridView ID="Grid

android缓存处理-Android开发中客户端如何进行数据的存储

问题描述 Android开发中客户端如何进行数据的存储 Android开发中客户端如何进行数据的存储以达到数据的缓存来减少与服务端的交互次数,并设置缓存时间?(求大神指导,最好有完整的代码) 十分需要!求帮助! 解决方案 推荐在客户端使用sqlite来存放本地的数据.因为是数据库,所以很多底层的事情不用考虑了.要放缓存,直接建立一个字段,获取的时间,这样判断下,如果超过,就再次访问服务器获取.

c++ 编程问题-C++中17位的数据存储到什么类型中

问题描述 C++中17位的数据存储到什么类型中 一个17位的数据应该存储到什么类型的变量里?要用来计算,请指教!谢谢! 解决方案 long是32位的,用这个 解决方案二: long型4个字节总共32位 解决方案三: int就可以,32位.

Android编程中的5种数据存储方式_Android

本文介绍Android平台进行数据存储的五大方式,分别如下: 1 使用SharedPreferences存储数据 2 文件存储数据      3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据 适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小游戏的玩家积分等),解锁口 令密

Android应用中使用SharedPreferences类存储数据的方法_Android

在Android系统中提供了多种存储技术.通过这些存储技术可以将数据存储在各种存储介质上.比如sharedpreferences可以将数据保存着应用软件的私有存储区,这些存储区的数据只能被写入这些数据的软件读取.当然Android还支持文件存储.SQLite数据库和Content Provider.在这里我们将对sharedpreferences存储方式进行介绍. SharedPreferences是一种轻量级的数据存储方式,学过Web开发的同学,可以想象它是一个小小的Cookie.它可以用键值