c# - ReportExecutionService not honoring timeout -
i using .net reportexecutionservice render ssrs reports. rendering many reports in rapid fire , randomly getting reports timeout. somewhere around 1 out of 1400 reports hang.
when check hanging report in executionlog3, see report status of rssuccess, , total time of around 3s. looks report finishes response never gets seen render call, , times out after 5 minutes following exception:
system.invalidoperationexception: there error in xml document (1, 2655). ---> system.net.webexception: operation has timed out. @ system.net.connectstream.read(byte[] buffer, int32 offset, int32 size) @ system.io.streamreader.readbuffer(char[] userbuffer, int32 useroffset, int32 desiredchars, boolean& readtouserbuffer) @ system.io.streamreader.read(char[] buffer, int32 index, int32 count) @ system.xml.xmltextreaderimpl.readdata() @ system.xml.xmltextreaderimpl.parsetext(int32& startpos, int32& endpos, int32& outorchars) @ system.xml.xmltextreaderimpl.parsetext() @ system.xml.xmltextreaderimpl.parseelementcontent() @ system.xml.xmltextreaderimpl.read() @ system.xml.xmltextreader.read() @ system.xml.xmlreader.readelementstring() @ microsoft.xml.serialization.generatedassembly.xmlserializationreader1.read12_reportparameter(boolean isnullable, boolean checktype) @ microsoft.xml.serialization.generatedassembly.xmlserializationreader1.read17_executioninfo(boolean isnullable, boolean checktype) @ microsoft.xml.serialization.generatedassembly.xmlserializationreader1.read111_setexecutionparametersresponse() @ microsoft.xml.serialization.generatedassembly.arrayofobjectserializer25.deserialize(xmlserializationreader reader) @ system.xml.serialization.xmlserializer.deserialize(xmlreader xmlreader, string encodingstyle, xmldeserializationevents events) --- end of inner exception stack trace ---
if has suggestions on how prevent these timeouts glad try, think easier solution if can figure out how set shorter timeout on render call. if can time out , retry report after 30s still give performance need.
here render call. timeout option need change make call fail after 30s?
//tried setting timeout in constructor var rsexec = new rsexecservice.reportexecutionservice { url = string.format("{0}{1}", url, executionserviceurl), timeout = 30000 }; //tried setting timeout before calling render rsexec.timeout = 30 * 1000; results = rsexec.render(format, deviceinfo, out extension, out mimetype, out encoding, out warnings, out streamids);
Comments
Post a Comment