2010-07-15 3 views
3

I는 다음과 같이 정의 된 WCF 웹 서비스가WCF WebInvoke Response에 크기 제한이 있습니까?

[OperationContract] 
[WebInvoke(
    Method = "GET", 
    ResponseFormat = WebMessageFormat.Json, 
    BodyStyle = WebMessageBodyStyle.Bare, 
    UriTemplate = "Assets/{assetId}/Reports/{startDate}/{endDate}")] 
JQGridDataStore<Report> GetReportsForAssetFilterByDate(string assetId, string startDate, string endDate); 

내 JQGridDataStore 보고서 인스턴스의 수천을 포함하면 응답을 받고 아무 문제가없는 다음 있습니다. 그러나 데이터 저장소가 10,000 개의 보고서를 초과하면 브라우저에서 다음과 같이 표시됩니다.

오류 324 (net :: ERR_EMPTY_RESPONSE) : 알 수없는 오류입니다.

나는 서비스 구현을 단계별로 밟아 본다. 예외없이 단계별로 볼 수있다. JQGridDataStore 객체는 완전히 생성되어 내 10,000 + Report 인스턴스로 채워집니다. 그러나 'F10'이 지나면 브라우저는 빈 응답을 표시합니다. 이 모든 일이 1 초 안에 발생하므로 어떤 종류의 시간 초과를 치고 있다고 생각하지 않습니다.

이에 근거하여 나는 몇 가지 유형의 버퍼 크기 한계가 있다고 생각하고 있습니다. 어떤 종류의 제한이 있으며 어떻게 수정합니까? 클라이언트의 Web.config에서

+0

svcconfigeditor에서 서비스 설정을로드 한 다음 다양한 한계를보고 변경하는 것이 좋습니다. –

답변

6

당신은 아마 DataContractJsonSerializer의 MaxItemsInObjectGraph 할당량을 사용하고있을 것입니다. (각 개별 객체 - 배열에 몇 가지 복잡한 유형이 있다면 그 중 10k 개가이 제한에 쉽게 부딪 힐 수 있습니다.) this과 같은 동작 구성에서 설정할 수 있습니다.

즉, 페이징 메타포를 살펴 보라고 제안했습니다. 아무도 그 모든 것들이 한 번에 내려 오기를 기다리고 싶지 않습니다. :)

+0

한 번에 10,000 개 이상의 보고서가 클라이언트에게는 쓸모가 없으므로 페이징 작업도하고 있습니다. – JadeMason

2

, 당신은 당신의 서비스에 maxReceivedMessageSize 특성을 설정하여받을 수있는 최대 크기를 설정할 수 있습니다 바인딩 :

<bindings> 
    <webHttpBinding> 
    <binding name="myWebHttpBinding" maxReceivedMessageSize="2000000" maxBufferSize="2000000"> 
    </binding> 
    </webHttpBinding> 
</bindings> 

나는 당신의 응답은 그래서 만약, 65536이 기본값을 믿는다 그보다 더 큰 것은 당신의 문제 일 수 있습니다.

희망이 도움이됩니다!

+0

WCF 클라이언트 설정 - 클라이언트가 브라우저입니다. – nitzmahone

+0

당신의 답이 제 문제를 해결했습니다. maxReceivedMessageSize는 응답이 아닌 요청의 제한입니다. 그래서 이것은 JadeMason을 도와주지 않을 수도 있습니다. –

관련 문제