SSRS Reportviewer v11 因 csv 参数过大而失败

SSRS Reportviewer v11 fails with large csv parameter

我有一个在 SSRS 2008 中构建的报告,当用户将大型 csv 作为参数传递给网页中的 ReportViewer 组件时,我遇到了问题。

我已经在 SSRS 中测试了完整参数并生成了报告,但是当通过 ReportView 传递信息时,抛出 Javascript 错误

参数失败

https://somedomain.com/reportviewer.aspx?Path=/somedomain.com/Report&DateStart=1-Aug-2014&DateEnd=31-Aug-2014&LCRep=akal1,acor1,alan1,aavi1,acus1,arya1,amou1,abal1,afbo1,aack1,andr1,awan1,afuq1,amco1,abou1,afee1,abia1,anth1,asca1,apsi1,agol1,acol1,alab1,btar1,blee1,bmay1,bmcc1,bbou1,rbac1,bcol1,bcur1,rkom1,rtra1,bgmo1,bhat1,bshe1,brad1,bmor1,bffl1,BHur1,bmck1,btri1,bwoh1,bjem1,bomi1,bkmc1,cmeu1,cfer1,carl1,csan1,csie1,cber1,cwbl1,cjcc1,cmda1,cdro1,ceva1,cgha1,crol1,cwas1,chus1,chhe1,cpai1,cpod1,ccal1,cbee1,clyd1,ccas1,cbie1,cchu1,cphi1,damo1,dhug1,dcac1,drol1,dani1,dwon1,dhag1,dalb1,dbar1,dgol1,wgre1,dgre1,dloo1,dmac1,davi1,dawn1,dkun1,djan1,derr1,dpac1,dwig1,egor1,epit1,elei1,ejam1,eken1,emag1,emac1,ebur1,eric1,ewin2,egol1,emod1,efar1,floy1,fnep1,fmag1,fcha1,ghay1,gtuc1,gbab1,ewin1,gdem1,geoc1,gsla1,gjuk1,ggri1,hpuc1,heck1,hjca1,hiki1,imic1,ifer1,igon1,jacq1,jmwi1,jbye1,jgut1,jgam1,jaga1,jwes2,jber1,wbur1,jjer1,jmor1,jtay1,jwax1,jbra1,jkee1,jgue1,jlam1,jnau1,jpel1,jlid1,jnha1,jboh1,jmax1,jwen1,jsac1,jing1,jdow1,jgil1,jgri1,john1,joss1,jpro1,jgsh1,jsta1,jjva1,jsev1,jfis1,jcar1,jcof1,jcfe1,jwpa1,jleo1,knar1,kbut1,kcur1,kary1,kafo1,kqua1,kare1,kbri1,kbai1,kgal1,kmar1,ktin1,khor1,kjor1,kdle1,kmul1,kbit1,kbot1,kebe1,ksch1,lros1,lsie1,lgro1,lcai1,ldev1,llha1,lesl1,ljri1,llaf1,msam1,mwda1,mhya1,mwil1,mkle1,miac1,mboh1,mcap1,mcla1,mmck1,mpmu1,mswi1,mtre1,mshe1,mhee1,mmar1,mrob1,mrud1,mgal1,nhow1,nmac1,npar1,nbel1,nico1,nman1,nand1,peng1,pzon1,prob1,pall1,pber1,pdar1,pdoy1,pfis1,pgod1,plam1,pbel1,pmck1,pcas1,pjen1,pone1,pkas1,pgui1,plav1,rand1,rfur1,rpan1,rpoc1,rtor1,rjsc1,rsta1,rduv1,rkra1,rluo1,rpoh1,rmou1,rcjo1,rfar1,regr1,rtai1,rbej1,rcov1,rpas1,rqui1,rwar1,rkli1,rwow1,spec1,ssca1,sian1,sdhi1,scot1,rjun1,slod1,snic1,scot2,sean1,shar1,cosh1,shei1,smas1,silv1,smil1,ssny1,svaq1,agre1,sgur1,shbr1,sher1,sjmu1,spap1,sjro1,sser1,sske1,such1,sore1,tcol1,tsau1,tnap1,tnea1,tdie1,tjfa1,tmur1,tach1,tmin1,trit1,tdra1,tlac1,tnew1,tsik1,vwor1,vsor1,vjua1,vmoo1,vchi1,wawi1,wqch1,wbow1,whun1,wley1,wyat1,waba1,wwis1

这是我返回的 Javascript 异常。

Unhandled exception at line 885, column 13 in http://somedomain.com:54821/ScriptResource.axd?d=VSuDvN4lmXp8v30Y-Tdw_ULVtosEuP4ipSMcwgw1ALEydnNZvMTFeuT3gKKJbjEPOhKXYnOLoHZl9-dfg1JeFAnpDaWGe1i6ERWN4bL9ZaOEoZWt42dwIsT8R5we_2n8S2D9sjkYf43p-LOD6vL5jVd1mKYQjrDo5hNpHtcFx5D_-3QzpoOJZF9kKCx6injg0&t=ffffffffb53e74b8

0x800a139e - JavaScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 404

传递查询

如果我减少 LCRep 参数中的项目数,则会生成报告。

https://somedomain.com/reportviewer.aspx?Path=/somedomeain.com/report&DateStart=1-Aug-2014&DateEnd=31-Aug-2014&LCRep=akal1,acor1,alan1,aavi1,acus1,arya1,amou1,abal1,afbo1,aack1,andr1,awan1,afuq1,amco1,abou1,afee1,abia1,anth1,asca1,apsi1,agol1,acol1,alab1,btar1,blee1,bmay1,bmcc1,bbou1,rbac1,bcol1,bcur1,rkom1,rtra1,bgmo1,bhat1,bshe1,brad1,bmor1,bffl1,BHur1,bmck1,btri1,bwoh1,bjem1,bomi1,bkmc1,cmeu1,cfer1,carl1,csan1,csie1,cber1,cwbl1,cjcc1,cmda1,cdro1,ceva1,cgha1,crol1,cwas1,chus1,chhe1,cpai1,cpod1,ccal1,cbee1,clyd1,ccas1,cbie1,cchu1,cphi1,damo1,dhug1,dcac1,drol1,dani1,dwon1,dhag1,dalb1,dbar1,dgol1,wgre1,dgre1,dloo1,dmac1,davi1,dawn1,dkun1,djan1,derr1,dpac1,dwig1,egor1,epit1,elei1,ejam1,eken1,emag1,emac1,ebur1,eric1,ewin2,egol1,emod1,efar1,floy1,fnep1,fmag1,fcha1,ghay1,gtuc1,gbab1,ewin1,gdem1,geoc1,gsla1,gjuk1,ggri1,hpuc1,heck1,hjca1,hiki1,imic1,ifer1,igon1,jacq1,jmwi1,jbye1,jgut1,jgam1,jaga1,jwes2,jber1,wbur1,jjer1,jmor1,jtay1,jwax1,jbra1,jkee1,jgue1,jlam1,jnau1,jpel1,jlid1,jnha1,jboh1,jmax1,jwen1,jsac1,jing1,jdow1,jgil1,jgri1,john1,joss1,jpro1,jgsh1,jsta1,jjva1,jsev1,jfis1,jcar1,jcof1,jcfe1,jwpa1

知道扩展参数列表导致此失败的原因吗?

编辑

报告生成至此

http://somedomain.com/ReportViewer.aspx?Path=/Report&DateStart=1-Aug-2014&DateEnd=31-Aug-2014&LCRep=akal1,acor1,alan1,aavi1,acus1,arya1,amou1,abal1,afbo1,aack1,andr1,awan1,afuq1,amco1,abou1,afee1,abia1,anth1,asca1,apsi1,agol1,acol1,alab1,btar1,blee1,bmay1,bmcc1,bbou1,rbac1,bcol1,bcur1,rkom1,rtra1,bgmo1,bhat1,bshe1,brad1,bmor1,bffl1,BHur1,bmck1,btri1,bwoh1,bjem1,bomi1,bkmc1,cmeu1,cfer1,carl1,csan1,csie1,cber1,cwbl1,cjcc1,cmda1,cdro1,ceva1,cgha1,crol1,cwas1,chus1,chhe1,cpai1,cpod1,ccal1,cbee1,clyd1,ccas1,cbie1,cchu1,cphi1,damo1,dhug1,dcac1,drol1,dani1,dwon1,dhag1,dalb1,dbar1,dgol1,wgre1,dgre1,dloo1,dmac1,davi1,dawn1,dkun1,djan1,derr1,dpac1,dwig1,egor1,epit1,elei1,ejam1,eken1,emag1,emac1,ebur1,eric1,ewin2,egol1,emod1,efar1,floy1,fnep1,fmag1,fcha1,ghay1,gtuc1,gbab1,ewin1,gdem1,geoc1,gsla1,gjuk1,ggri1,hpuc1,heck1,hjca1,hiki1,imic1,ifer1,igon1,jacq1,jmwi1,jbye1,jgut1,jgam1,jaga1,jwes2,jber1,wbur1,jjer1,jmor1,jtay1,jwax1,jbra1,jkee1,jgue1,jlam1,jnau1,jpel1,jlid1,jnha1,jboh1,jmax1,jwen1,jsac1,jing1,jdow1,jgil1,jgri1,john1,joss1,jpro1,jgsh1,jsta1,jjva1,jsev1,jfis1,jcar1,jcof1,jcfe1,jwpa1,jleo1,knar1,kbut1,kcur1,kary1,kafo1,kqua1,kare1,kbri1,kbai1,kgal1,kmar1,ktin1,khor1,kjor1,kdle1,kmul1,kbit1,kbot1,kebe1,ksch1,lros1,lsie1,lgro1,lcai1,ldev1,llha1,lesl1,ljri1,llaf1,msam1,mwda1,mhya1,mwil1,mkle1,miac1,mboh1,mcap1,mcla1,mmck1,mpmu1,mswi1,mtre1,mshe1,mhee1,mmar1,mrob1,mrud1,mgal1,nhow1,nmac1,npar1,nbel1,nico1,nman1,nand1,peng1,pzon1,prob1,pall1,pber1,pdar1,pdoy1,pfis1,pgod1,plam1,pbel1,pmck1,pcas1,pjen1,pone1,pkas1,pgui1,plav1,rand1,rfur1

LCRep 参数包含 242 项共 1451 个字符,包括逗号。

故障Javascript

代码在 throw error; 行中断

function Sys$WebForms$PageRequestManager$_endPostBack(error, executor, data) {
    if (this._request === executor.get_webRequest()) {
        this._processingRequest = false;
        this._additionalInput = null;
        this._request = null;
    }
    var handler = this._get_eventHandlerList().getHandler("endRequest");
    var errorHandled = false;
    if (handler) {
        var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, data ? data.dataItems : {}, executor);
        handler(this, eventArgs);
        errorHandled = eventArgs.get_errorHandled();
    }
    if (error && !errorHandled) {
        throw error;
    }
}

看起来问题出在 URL 的长度上。 Microsoft

this Whosebug post and also in this article 中对此进行了讨论

我认为是JC。正确的想法是编码将其推过长度限制并导致 ReportViewer 出现奇怪的故障。感谢 JC 的帮助。