Tôi gặp sự cố khi chỉ định dataContractSerializer maxItemsInObjectGraph trong web.config của máy chủ lưu trữ.Dữ liệu dịch vụ WCFContractSerializer maxItemsInObjectGraph trong web.config
<behaviors>
<serviceBehaviors>
<behavior name="beSetting">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="True" />
<dataContractSerializer maxItemsInObjectGraph="2147483646"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="MyNamespace.MyService"
behaviorConfiguration="beSetting" >
<endpoint address="http://localhost/myservice/"
binding="webHttpBinding"
bindingConfiguration="webHttpBinding1"
contract="MyNamespace.IMyService"
bindingNamespace="MyNamespace">
</endpoint>
</service>
</services>
Điều trên không ảnh hưởng đến việc kéo dữ liệu của tôi. Máy chủ hết thời gian chờ vì khối lượng dữ liệu lớn.
Tôi tuy nhiên có thể xác định giới hạn tối đa trong mã và làm việc
[ServiceBehavior(MaxItemsInObjectGraph=2147483646, IncludeExceptionDetailInFaults = true)]
public abstract class MyService : MyService
{
blah...
}
Có ai biết tại sao tôi không thể làm công việc này thông qua một thiết lập web.config? Tôi muốn giữ trong web.config để nó dễ dàng hơn cho các bản cập nhật trong tương lai.
Tôi cũng gặp sự cố này. Tôi tự hỏi tại sao không ai khác trả lời? Cảm ơn bạn đã tip về việc có thể thiết lập 'ServiceBehavior' trong mã, ít nhất nó có thể khiến tôi di chuyển. – jocull
Bạn biết rằng maxItemsInObjectGraph chỉ xác định tổng số phần tử được phép trong phản hồi chứ không phải kích thước phản hồi hoàn toàn đúng không? (tôi nghĩ rằng nếu nó không được chỉ định nó mặc định là 60k xml elements) –
Dave, câu hỏi của bạn có được trả lời hay không? Nếu câu trả lời đã cho giải quyết được vấn đề của bạn, hãy đánh dấu nó như vậy. – Bardia