2011-01-13 5 views
0

У меня есть служба WCF, реализованная с использованием WebServiceHostFactory (REST).Ошибки службы WCF (Rest), когда объект JSON имеет длинную строку

Я вызываю конечную точку службы как POST, отправляющую объект json, который имеет свойство string.

Это работает до точки, но кажется, что если длина этой строки слишком длинная (не уверен точно, как долго (8000 символов работают, но 9000 не ... Я не пытался, но «точка разлома» могла быть 8192)

Я пытаюсь проверить StatusCode в обратного вызова, который работает отлично подходит для небольших строк, но когда жало «слишком долго» ниже код ошибки с:.

System.Net.WebException: The remote server returned an error: NotFound. 

Ответный код:

var request = (HttpWebRequest)result.AsyncState; 
var response = (HttpWebResponse)request.EndGetResponse(result); 

Я пытаюсь выяснить, где проблема, поскольку служба существует, и я получаю только это, когда строка слишком длинная.

Это размер объекта json? Это мое определение сервиса? Это что-то в WCF?

Thanks

ответ

1

Я думаю, что это проблема с MaxStringContentLength Недвижимость от квот для читателей. Его значение по умолчанию действительно 8192. Вы можете изменить значение в конфигурации связывания:

<system.serviceModel> 
    <bindings> 
    <webHttpBinding> 
     <binding name="LargeString"> 
     <readerQuotas maxStringContentLength="16000" /> 
     </binding> 
    </webHttpBinding> 
    </bindings> 
</system.serviceModel> 

Reference это связывание конфигурации в конфигурации конечных точек:

<endpoint address="..." contract="..." binding="webHttpBinding" bindingConfiguration="LargeString" /> 

В случае WCF 4.0 вы можете опустить имя в связывании и его следует использовать как конфигурацию по умолчанию для всех конечных точек webHttp.

0

Я могу придумать причины, не зная об этом. Может быть, вы превысите максимальную длину сообщения? Это можно установить в файле App.Config.

Если у вас есть большой объем данных для передачи, вы можете использовать потоковое вещание или создать свой собственный API так же, как курсоры работают в SQL.

Смежные вопросы