C# 可能在WCF服务中忽略绑定值

C# 可能在WCF服务中忽略绑定值,c#,wcf,C#,Wcf,我有一个WCF服务,它有许多方法,其中一个如下所示: private void TraceEvent(object sender, TraceEventArgs eventArgs) { try { this._ApiEvents.TraceEvent(eventArgs); } catch (System.ServiceModel.CommunicationObjectAbortedExcepti

我有一个WCF服务,它有许多方法,其中一个如下所示:

private void TraceEvent(object sender, TraceEventArgs eventArgs)
    {
        try
        {
             this._ApiEvents.TraceEvent(eventArgs);
        }
        catch (System.ServiceModel.CommunicationObjectAbortedException)
        {
            // The Client has disconnected.  Absorb this exception so that we can finish gracefully.
        }
    }
eventArgs有两个属性,一个整数和一个字符串。现在,如果字符串较短,则运行没有问题。但是如果字符串很长,例如我有一个大约30000字节长的字符串,那么这就不起作用了。我已尝试以编程方式更改绑定的值:

XmlDictionaryReaderQuotas myReaderQuotas = new XmlDictionaryReaderQuotas();
            myReaderQuotas.MaxStringContentLength = 2;
            myReaderQuotas.MaxArrayLength = 2;
            myReaderQuotas.MaxBytesPerRead = 2;
            myReaderQuotas.MaxDepth = 2;
            myReaderQuotas.MaxNameTableCharCount = 2;

            binding.GetType().GetProperty("ReaderQuotas").SetValue(binding, myReaderQuotas, null);

            binding.MaxBufferPoolSize = 2;
            binding.MaxBufferSize = 2;
            binding.MaxReceivedMessageSize = 2;

将所有值都设置为2以断开它,以确保我设置了正确的值。但这一切都很好,所以这些值似乎被忽略了。知道这里可能发生了什么吗?

大约20000字节的数据就可以了。发生的情况是消息根本无法传递到客户端。您何时执行此配置?很可能它发生得太晚了。有指定的位置和方法来更改设置,我很确定您不需要反射。我在加载客户端表单时会做第一件事。“反射”是什么意思?更改设置的指定位置和方式是什么?
GetType().GetProperty(…).SetValue(…)
是反射,您不需要它。大约20000字节时它就可以工作了。发生的情况是消息根本无法传递到客户端。您何时执行此配置?很可能它发生得太晚了。有指定的位置和方法来更改设置,我很确定您不需要反射。我在加载客户端表单时会做第一件事。“反射”是什么意思?更改设置的指定位置和方式是什么?
GetType().GetProperty(…).SetValue(…)
是反射,您不需要它。