C# 当数据库结果非常好时,我如何处理WCF服务?
我使用下面的代码:C# 当数据库结果非常好时,我如何处理WCF服务?,c#,wcf,state,C#,Wcf,State,我使用下面的代码: private class WcfProxy<TService> : ClientBase<TService> where TService : class, IContract { public TService WcfChannel { get { retur
private class WcfProxy<TService> :
ClientBase<TService> where TService : class, IContract
{
public TService WcfChannel
{
get
{
return Channel;
}
}
}
protected TResult ExecuteCommand<TResult>(Func<TContract, TResult> command)
where TResult : IDtoResponseEnvelop
{
var proxy = new WcfProxy<TContract>();
try
{
var result = command.Invoke(proxy.WcfChannel);
proxy.Close();
return result;
}
catch (CommunicationException ex)
{
proxy.Abort();
throw new BusinessException(BusinessExceptionEnum.Operational, Properties.Resources.Exception.WcfAdapterBase_CommunicationException_TransportInEnamDataIsInvalid, ex);
}
catch (TimeoutException ex)
{
proxy.Abort();
throw new BusinessException(BusinessExceptionEnum.Operational, Properties.Resources.Exception.WcfAdapterBase_TimeoutException, ex);
}
catch (Exception)
{
proxy.Abort();
throw;
}
}
私有类WcfProxy:
ClientBase,其中TService:class,IContract
{
公共服务WcfChannel
{
得到
{
返回通道;
}
}
}
受保护的TResult ExecuteCommand(Func命令)
where TResult:IDToResponse seenvelop
{
var proxy=new WcfProxy();
尝试
{
var result=command.Invoke(proxy.WcfChannel);
proxy.Close();
返回结果;
}
捕获(通信例外)
{
proxy.Abort();
抛出新的BusinessException(BusinessExceptionName.Operational,Properties.Resources.Exception.WcfAdapterBase_CommunicationException_TransportineNameDataIsInvalid,ex);
}
捕获(TimeoutException例外)
{
proxy.Abort();
抛出新的BusinessException(BusinessExceptionName.Operational,Properties.Resources.Exception.WcfAdapterBase_TimeoutException,ex);
}
捕获(例外)
{
proxy.Abort();
投掷;
}
}
当查询返回大量结果时
我遇到这样的信息:
通信对象无法用于通信,因为它处于故障状态
是否存在成功观察数据库查询结果的方法或技巧
或者我将结果除以或得到部分结果的方法?您会得到以下错误:
通信对象无法用于通信,因为它
处于故障状态
因为您抛出了一个错误,而该错误未被处理,并被抛出到iis池中
查看此链接:这也不是由大量数据引起的:可能需要激活maxReceivedMessageSize或其他绑定参数之一
您还可以启用wcf跟踪并使用svcTraceViewer.exe查看它,因为如果设置的值大于它,我会遇到一个正确的错误,因为这个数字是最大整数。想想你真的需要这么大:)