C# 接收HTTP响应错误时出错
在使用wcf客户端进行测试时,我的wcf服务出现问题。调试时,我看到数据从函数返回,但在响应期间出错。有人能帮我找出我遗漏了什么吗 这是我的服务和配置文件:C# 接收HTTP响应错误时出错,c#,.net,wcf,exception-handling,C#,.net,Wcf,Exception Handling,在使用wcf客户端进行测试时,我的wcf服务出现问题。调试时,我看到数据从函数返回,但在响应期间出错。有人能帮我找出我遗漏了什么吗 这是我的服务和配置文件: public List<PO> GetAllPOs() { var data = new List<PO>(); try { var manager = new EntityReaderManager<PO>(ConfigurationManager.AppSett
public List<PO> GetAllPOs()
{
var data = new List<PO>();
try
{
var manager = new EntityReaderManager<PO>(ConfigurationManager.AppSettings("FilemakerDB"]);
data = manager.GetEntityList();
}
catch (Exception ex)
{
ILogger logger = new Logger(typeof(FilemakerDataService));
logger.Error(ex.Message);
}
return data;
}
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true" logKnownPii="true" logMalformedMessages="true"
logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true"
maxSizeOfMessageToLog="2147483647" />
<endToEndTracing propagateActivity="true" activityTracing="false"
messageFlowTracing="true" />
</diagnostics>
<bindings>
<wsHttpBinding>
<binding name="Custom.WSHTTPBinding.Configuration" closeTimeout="10:10:00"
openTimeout="10:10:00" receiveTimeout="10:10:00" sendTimeout="10:10:00"
maxBufferPoolSize="655360" maxReceivedMessageSize="655360">
<security mode="None" />
</binding>
</wsHttpBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="false" />
<services>
<service behaviorConfiguration="Custom.ServiceBehavior" name="AerWorldwide.Service.Web.FilemakerData.FilemakerDataService">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="Custom.WSHTTPBinding.Configuration"
name="Custom.WSHTTPBinding.Configuration" contract="AerWorldwide.Service.Web.FilemakerData.IFilemakerDataService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="Custom.ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
首先,在您的服务上启用,并查看异常的原因
你也会考虑增加服务器和客户端的读配额,这样大数据就不会有问题了。样本如下:
<wsHttpBinding>
<binding name="Custom.WSHTTPBinding.Configuration" closeTimeout="10:10:00"
openTimeout="10:10:00" receiveTimeout="10:10:00" sendTimeout="10:10:00"
maxBufferPoolSize="655360" maxReceivedMessageSize="655360">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="None" />
</binding>
</wsHttpBinding>
我在代码中还看到,您正在直接传递实体框架获取的对象。在某些情况下,实体框架对象不会被反序列化,并可能导致异常。创建一个简单的POCO,然后填充获取的数据并返回POCO 首先在您的服务上启用,并查看异常的原因
你也会考虑增加服务器和客户端的读配额,这样大数据就不会有问题了。样本如下:
<wsHttpBinding>
<binding name="Custom.WSHTTPBinding.Configuration" closeTimeout="10:10:00"
openTimeout="10:10:00" receiveTimeout="10:10:00" sendTimeout="10:10:00"
maxBufferPoolSize="655360" maxReceivedMessageSize="655360">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="None" />
</binding>
</wsHttpBinding>
我在代码中还看到,您正在直接传递实体框架获取的对象。在某些情况下,实体框架对象不会被反序列化,并可能导致异常。创建一个简单的POCO,然后填充获取的数据并返回POCO 您遇到的错误是什么?无法从传输连接读取数据:远程主机强制关闭了现有连接。在System.Net.PooledStream.Read(Byte[]buffer,Int32 offset,Int32 size)的System.Net.Sockets.NetworkStream.Read(Byte[]buffer,Int32 offset,Int32 size)的System.Net.Connection.SyncRead(HttpWebRequest请求,Boolean userRetrievedStream,Boolean ProberRead)的System内部异常:远程主机在System.Net.Sockets.Socket.Receive(Byte[]buffer,Int32 offset,Int32 size,SocketFlags SocketFlags)强制关闭了现有连接。我还发现终结点中包含名称值,并将其取出。仍然会得到一个错误,尽管这意味着发生了一些未处理的异常。你能确保你的代码运行良好吗。您可以在VisualStudio中启用跟踪,也可以启用异常提示(调试=>Exceptions=>Common Langue的勾选抛出…)。也许你的记录器坏了。另一件需要检查的事情是您试图通过通道传递的数据量。它可能太大,您必须增加邮件大小。如何在跟踪文件中查找它是否太大?您得到的错误是什么?无法从传输连接读取数据:远程主机强制关闭了现有连接。在System.Net.PooledStream.Read(Byte[]buffer,Int32 offset,Int32 size)的System.Net.Sockets.NetworkStream.Read(Byte[]buffer,Int32 offset,Int32 size)的System.Net.Connection.SyncRead(HttpWebRequest请求,Boolean userRetrievedStream,Boolean ProberRead)的System内部异常:远程主机在System.Net.Sockets.Socket.Receive(Byte[]buffer,Int32 offset,Int32 size,SocketFlags SocketFlags)强制关闭了现有连接。我还发现终结点中包含名称值,并将其取出。仍然会得到一个错误,尽管这意味着发生了一些未处理的异常。你能确保你的代码运行良好吗。您可以在VisualStudio中启用跟踪,也可以启用异常提示(调试=>Exceptions=>Common Langue的勾选抛出…)。也许你的记录器坏了。另一件需要检查的事情是您试图通过通道传递的数据量。它可能太大,您必须增加邮件大小。如果跟踪文件中的邮件太大,我如何查找?