Estoy tratando de obtener el resultado de mi servicio wcf en json, como puede ver:

public List<InquiryStatus> SearchInquiryStatus(string userid, string datestart, string dateend)
{
    string result = "";
    using (WebClient ClientRequest = new WebClient())
    {
        ClientRequest.Headers["Content-type"] = "application/json";
        ClientRequest.Encoding = System.Text.Encoding.UTF8;
        result = ClientRequest.DownloadString(ServiceHostName + "/MonitoringInquiryService.svc/SearchInquiryStatus/" +
                                                userid + "/" 
                                                + datestart + "/" + dateend
                                                );
    }
    var javascriptserializer = new JavaScriptSerializer();
    return javascriptserializer.Deserialize<List<InquiryStatus>>(result);
}

Pero me sale este error:

Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property.
Parameter name: input

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentException: Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property.
Parameter name: input

Como nota cuando llamo a mi URL de servicio http://reporting.demo.ir/MonitoringInquiryService.svc/SearchInquiryStatus/null/'20171106'/'20171113' en el navegador obtengo el resultado. Busqué en Google mi error y encontré esto:

<configuration> 
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="50000000"/>
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration> 

Agregué esto a mi configuración web UI. Pero obtengo el mismo error.

3
Ehsan Akbar 13 nov. 2017 a las 07:47

2 respuestas

La mejor respuesta

Su proyecto de interfaz de usuario parece estar en el marco ASP.NET MVC donde JavaScriptSerializer MaxJsonLength no se puede leer desde la configuración web.config como ha especificado en la pregunta.

Para configurar MaxJsonLength, debe especificar el valor en el código de la siguiente manera:

var javascriptserializer = new JavaScriptSerializer()
{
    MaxJsonLength = Int32.MaxValue // specify length as per your business requirement
};
4
Akash KC 13 nov. 2017 a las 06:59

Agrega esta línea en tu función.

 var javascriptserializer = new JavaScriptSerializer();
javascriptserializer.MaxJsonLength = Int32.MaxValue;
2
Koderzzzz 13 nov. 2017 a las 05:29