0

我使用下面的代码:

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;
        }
    }

当查询返回大量结果时,我遇到此消息:

通信对象无法用于通信,因为它处于故障状态

是否存在我成功观察数据库查询结果的方式或技巧,或者我划分结果或获取部分结果的方式?

4

2 回答 2

1

可能您需要增加 maxReceivedMessageSize 或绑定的其他参数之一。

您还可以启用 wcf 跟踪并使用 svcTraceViewer.exe 查看它

于 2013-04-21T19:07:14.210 回答
0

你得到这个错误:

通信对象无法用于通信,因为它处于故障状态。

因为你抛出一个错误并且它没有被处理并被抛出到iis 池中

检查此链接:http : //social.msdn.microsoft.com/Forums/en-US/wcf/thread/fc60cd6d-1df9-47ff-90a8-dd8d5de1f080/ 这也不是由大量数据引起的:WCF无法用于通信,因为它处于故障状态

于 2013-04-21T10:51:02.007 回答