Nabibigo ang pag-export ng SSRS sa isang portal na VPN na walang kliyente: ano ang naiiba
Pinatutunayan ng pahina ng ulat ang pag-render, hindi ang pag-export. Sundin ang kahilingan sa pag-export sa portal, ihambing ang mga header at body, pagkatapos ay limitahan nang makitid ang anumang eksepsiyon.
Bumukas ang ulat sa browser, nire-render ang mga parameter, at ang pindutan ng pag-export ay gumagawa ng error, walang laman na download o file na ayaw buksan ng spreadsheet. May karaniwang hugis ang kombinasyong iyon. Sinubukan ng gumaganang pahina ng ulat ang pag-render at pagpapatotoo at wala nang iba. Ang pag-export ay hiwalay na kahilingan na may sariling tugon, at sa isang portal na walang kliyente dumadaan din ito sa isang layer ng muling pagsulat na hindi kailanman dinisenyo para sa pag-download ng file.
Dalawang landas, isang gumaganang pahina
Ang pag-render at pag-export ay magkaibang operasyon kahit nagsisimula sila sa parehong pindutan. Nire-render ng server ng ulat ang pahina para sa browser at nire-render ang pag-export sa pamamagitan ng ibang extension ng output na may sariling uri ng nilalaman at sariling pag-uugali sa error, gaya ng inilalarawan ng dokumentasyon ng pag-export. Ang portal na perpektong nagpaparaan sa una ay maaari pa ring sirain ang pangalawa, dahil ang pangalawa ay tugon na hindi inaasahang makita ng portal. Ibinabahagi ng dalawa ang isang sesyon at isang address, at halos wala nang iba.
Ituring ang gumaganang pahina bilang patunay ng pagpapatotoo at maabot lamang. Pinatutunayan nitong maaabot ng account ang server ng ulat at ipinapasa ng portal ang HTML. Wala itong sinasabi tungkol sa mga tugon ng file, mga header ng paglalagay ng nilalaman o mga redirect na nagtatapos sa download sa halip na dokumento.
Iyon ang buong dahilan upang ihambing nang hiwalay ang landas ng pag-export sa halip na subukan muli ang pahinang gumagana na. Dalawang kahilingan na nagbabahagi ng sesyon ay dalawang kahilingan pa rin.
Tatlong kundisyon na nagpapasya kung saan masisira ang pag-export
Tatlong tanong ang mabilis na naglalagay ng depekto, at bawat sagot ay tumuturo sa ibang may-ari.
Una, tama bang nai-export ang parehong ulat, account at format mula sa panloob na network? Kung oo, maayos ang server ng ulat at ang renderer nito at ang pagkakaiba ay nasa landas ng access. Ikalawa, may dala bang uri ng nilalaman ng file ang nabigong tugon, o pahina ng HTML na may extension ng file? Hinihiwalay nito ang error ng renderer sa pagpapalit ng portal. Ikatlo, muling isinusulat ba ng portal ang URL ng kahilingan o tinatanggal ang mga header mula sa tugon? Ang muling isinulat na URL ay maaaring mapunta sa ganap na ibang endpoint.
Sagutin ang tatlo bago baguhin ang anumang setting, dahil bawat isa ay may ibang lunas. Ang depekto ng renderer ay pag-aari ng server ng ulat, ang pinalitang body ay pag-aari ng portal, at ang tinanggal na header ay isyu ng patakaran, hindi bug.
Isulat ang mga sagot. Ang kaso ng suporta na binuo mula sa tatlong linyang iyon ay katumbas ng sampung screenshot.
Basahin ang tugon ng pag-export sa halip na ang status code
Ang matagumpay na status ng HTTP ay nagpapatunay lamang na may sumagot sa kahilingan. Suriin ang body at mga header nang magkasama, dahil ang kawili-wiling pagkabigo ay matagumpay na tugon na may dalang maling nilalaman.
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
Ipinapakita ng dump ng header ang uri ng nilalaman at anumang paglalagay ng nilalaman na ibinalik ng portal. Tinutukoy ng command na file kung ano talaga ang body, at ang text file sa lugar kung saan inaasahan ang spreadsheet ay ang klasikong pinalitang pahina ng pag-sign in. Ipinapakita ng command na head ang sapat upang makilala ang HTML nang hindi nagbubuhos ng buong ulat sa terminal.
Alisin ang mga cookie ng sesyon at token bago ibahagi ang anumang bahagi nito. Ang pagkuha ng gumaganang pag-export ay kapaki-pakinabang na ebidensya, at ang pagkuha ng sesyon ng ibang tao ay insidente.
Limitahan ang eksepsiyon sa aplikasyon, hindi sa account
Kung muling isinusulat o hinaharangan ng portal ang tugon, ang nakatutukso na pagkumpuni ay ibukod ang buong site o gawing anonymous ang ulat. Inaayos ng dalawa ang download at tinatanggal ang dahilan kung bakit umiiral ang portal. Ang limitadong eksepsiyon ay nagpapangalan ng isang landas ng aplikasyon, isang uri ng nilalaman at isang direksyon, at nananatili itong nasusuri ng sinumang may-ari ng patakaran.
Gamitin ang bersyon ng gateway na aktwal mong pinapatakbo at ang mga dokumentadong setting ng aplikasyon nito. Ang opsiyon na minsang inilarawan ng vendor bilang iniiwan ang trapiko na hindi nagbabago ay hindi pangkalahatang tagubilin, at ang pagkopya nito mula sa lumang thread ng forum ay ang paraan kung paano nagiging permanenteng arkitekturang ang pansamantalang eksepsiyon.
Kung hindi maaaring limitahan nang gayon kanipis ang eksepsiyon, malamang na kabilang ang pag-export sa panloob na landas na may ibang paraan ng access sa halip na sa likod ng portal. Ang pagbubukod sa buong site ay desisyon para sa may-ari ng portal, hindi solusyong palihis para sa isang ulat.
Tanggapin ang pag-export, hindi ang dialog na I-save
Ang huling pagsusuri ay ang file mismo: bumubukas ito, may hawak na mga inaasahang column, at tumutugma ang mga total nito sa ulat na inaprubahan ng user.
Ang paglitaw ng dialog na I-save ay hindi tagumpay, at ang file na bumubukas na may babala sa pagkumpuni ay hindi rin tagumpay. Ihambing ang bilang ng row at isang kilalang halaga sa ulat sa screen, dahil ang pinutol na pag-export ay pumasa sa bawat pagsubok na tumitingin lamang sa laki ng file. Pagkatapos ay mag-export muli, dahil ang layer ng cache na minsang naghahatid ng maling body ay maaaring maghatid ng tama sa susunod na pagtatangka.
Tanggapin ang workflow na kailangan ng user, at wala nang mas mababa pa roon. Ang download na bumubukas sa maling aplikasyon ay nabigong pag-export pa rin.