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查看它,因为如果设置的值大于它,我会遇到一个正确的错误,因为这个数字是最大整数。想想你真的需要这么大:)