SSRS-uitvoer misluk deur ’n kliëntlose VPN-portaal: wat anders is
Die verslagbladsy bewys weergawe, nie uitvoer nie. Volg die uitvoerverzoek deur die portaal, vergelyk koptekste en liggaam, en beperk dan enige uitsondering nou.
Die verslag maak in die blaaier oop, die parameters wys, en die uitvoerknoppie lewer ’n fout, ’n leë aflaai of ’n lêer wat die sigblad weier om oop te maak. Daardie kombinasie het ’n standaardvorm. ’n Werkende verslagbladsy het weergawe en verifikasie getoets en niks anders nie. Die uitvoer is ’n aparte versoek met sy eie antwoord, en deur ’n kliëntlose portaal gaan dit ook deur ’n herskryflaag wat nooit vir lêeraflaaie ontwerp is nie.
Twee weë, een werkende bladsy
Weergawe en uitvoer is verskillende bewerkings, selfs wanneer hulle van dieselfde knoppie begin. Die verslagbediener wys die bladsy vir ’n blaaier en lewer die uitvoer deur ’n ander uitvoeruitbreiding met sy eie inhoudtipe en sy eie foutgedrag, soos die uitvoerdokumentasie beskryf. ’n Portaal wat die eerste volmaak deurlaat, kan die tweede steeds vermink, want die tweede is ’n antwoord wat die portaal nie verwag het om te sien nie. Die twee deel ’n sessie en ’n adres, en byna niks anders nie.
Hanteer die werkende bladsy slegs as bewys van verifikasie en bereikbaarheid. Dit bewys dat die rekening die verslagbediener kan bereik en dat die portaal HTML aanstuur. Dit sê niks oor lêerantwoorde, inhoudsdisposisie-koptekste of herleidings wat in ’n aflaai eindig eerder as in ’n dokument nie.
Dit is die hele rede om die uitvoerpad op sy eie te vergelyk in plaas daarvan om die bladsy wat reeds werk weer te toets. Twee versoeke wat ’n sessie deel, bly steeds twee versoeke.
Drie toestande wat bepaal waar die uitvoer breek
Drie vrae plaas die fout vinnig, en elke antwoord wys na ’n ander eienaar.
Eerstens, lewer dieselfde verslag, rekening en formaat korrek uit vanaf die interne netwerk? As dit die geval is, is die verslagbediener en sy weergewer foutloos en lê die verskil in die toegangspad. Tweedens, dra die mislukkende antwoord ’n lêerinhoudtipe, of ’n HTML-bladsy met ’n lêeruitbreiding? Dit skei ’n weergewerfout van ’n portaalvervanging. Derdens, herskryf die portaal die versoek-URL of stroop dit koptekste van die antwoord? ’n Herskrewe URL kan op ’n heeltemal ander eindpunt beland.
Beantwoord al drie voordat jy ’n instelling verander, want elkeen het ’n ander oplossing. ’n Weergewerfout hoort by die verslagbediener, ’n vervangde liggaam hoort by die portaal, en ’n gestroopte koptekst is ’n beleidsvraag eerder as ’n fout.
Skryf die antwoorde neer. ’n Ondersteuningsgeval wat uit daardie drie reëls gebou is, is tien skermkiekies werd.
Lees die uitvoerantwoord eerder as die statuskode
’n Suksesstatus van HTTP bewys net dat iets die versoek beantwoord het. Ondersoek die liggaam en die koptekste saam, want die interessante faling is ’n suksesvolle antwoord wat die verkeerde inhoud dra.
curl -sS -D export.headers -o export.bin --location "https://portal.example.com/reports/export?format=xlsx"
file export.bin
head -c 300 export.bin
Die koptekstrop wys die inhoudtipe en enige inhoudsdisposisie wat die portaal teruggegee het. Die opdrag file identifiseer wat die liggaam werklik is, en ’n tekslêer waar ’n sigblad verwag is, is die klassieke vervangde aanmeldbladsy. Die opdrag head wys genoeg om HTML te herken sonder om ’n hele verslag in ’n terminaal te stort.
Verwyder sessiekoekies en tekens voordat jy enigiets daarvan deel. ’n Opname van ’n werkende uitvoer is nuttige bewyse, en ’n opname van ’n sessie wat aan iemand anders behoort, is ’n voorval.
Beperk ’n uitsondering tot die toepassing, nie die rekening nie
As die portaal die antwoord herskryf of blokkeer, is die verleidelike herstel om die hele werf vry te stel of die verslag anoniem te maak. Albei maak die aflaai reg en verwyder die rede waarom die portaal bestaan. ’n Beperkte uitsondering noem een toepassingspad, een inhoudtipe en een rigting, en dit bly hersienbaar deur wie ook al die beleid besit.
Gebruik die poortwag-weergawe wat jy werklik gebruik en sy gedokumenteerde toepassinginstellings. ’n Opsie wat ’n verskaffer eens beskryf het as een wat verkeer onveranderd laat, is nie ’n algemene instruksie nie, en om dit uit ’n ou forumdraad te kopieer, is hoe ’n tydelike uitsondering permanente argitektuur word.
As die uitsondering nie so nou beperk kan word nie, hoort die uitvoer waarskynlik op die interne pad met ’n ander toegangsmetode eerder as agter die portaal. ’n Werfwyde vrystelling is ’n besluit vir die portaal-eienaar, nie ’n noodoplossing vir een verslag nie.
Aanvaar die uitvoer, nie die Stoor-dialoog nie
Die laaste kontrole is die lêer self: dit maak oop, dit hou die verwagte kolomme, en sy totales stem ooreen met die verslag wat die gebruiker goedgekeur het.
’n Stoor-dialoog wat verskyn, is nie sukses nie, en ’n lêer wat met ’n herstelwaarskuwing oopmaak, is ook nie sukses nie. Vergelyk ’n ry telling en een bekende waarde met die verslag op die skerm, want ’n afgekapte uitvoer slaag elke toets wat net na lêergrootte kyk. Voer dan ’n tweede keer uit, want ’n kaslaag wat een keer die verkeerde liggaam lewer, kan die volgende keer die regte een lewer.
Aanvaar die werkvloei wat die gebruiker nodig gehad het, en niks minder nie. ’n Aflaai wat in die verkeerde toepassing oopmaak, is steeds ’n mislukte uitvoer.