Eksport SSRS gagal melalui portal VPN tanpa klien: apa yang berbeza
Halaman laporan membuktikan pemaparan, bukan eksport. Jejaki permintaan eksport melalui portal, bandingkan pengepala dan isi, kemudian hadkan sebarang pengecualian secara sempit.
Laporan dibuka dalam pelayar, parameter dipaparkan, dan butang eksport menghasilkan ralat, muat turun kosong atau fail yang enggan dibuka oleh hamparan. Gabungan itu mempunyai bentuk standard. Halaman laporan yang berfungsi telah menguji pemaparan dan pengesahan, dan tiada yang lain. Eksport ialah permintaan berasingan dengan responsnya sendiri, dan melalui portal tanpa klien ia juga merentasi lapisan penulisan semula yang tidak pernah direka untuk muat turun fail.
Dua laluan, satu halaman yang berfungsi
Pemaparan dan eksport ialah operasi berbeza walaupun bermula dari butang yang sama. Pelayan laporan memaparkan halaman untuk pelayar dan memaparkan eksport melalui sambungan output lain dengan jenis kandungannya sendiri dan tingkah laku ralatnya sendiri, seperti yang diterangkan oleh dokumentasi eksport. Portal yang melepaskan yang pertama dengan sempurna masih boleh merosakkan yang kedua, kerana yang kedua ialah respons yang portal tidak jangkakan untuk melihat. Kedua-duanya berkongsi sesi dan alamat, dan hampir tiada apa-apa lagi.
Anggap halaman yang berfungsi hanya sebagai bukti pengesahan dan kebolehcapaian. Ia membuktikan bahawa akaun boleh sampai ke pelayan laporan dan bahawa portal memajukan HTML. Ia tidak menyatakan apa-apa tentang respons fail, pengepala pelupusan kandungan atau ubah hala yang berakhir dengan muat turun dan bukan dokumen.
Itulah seluruh sebab untuk membandingkan laluan eksport secara berasingan dan bukannya menguji semula halaman yang sudah berfungsi. Dua permintaan yang berkongsi sesi masih dua permintaan.
Tiga syarat yang menentukan di mana eksport terputus
Tiga soalan meletakkan kesalahan dengan cepat, dan setiap jawapan menunjuk kepada pemilik yang berbeza.
Pertama, adakah laporan, akaun dan format yang sama dieksport dengan betul dari rangkaian dalaman? Jika ya, pelayan laporan dan pemaparnya baik dan perbezaannya terletak pada laluan akses. Kedua, adakah respons yang gagal membawa jenis kandungan fail, atau halaman HTML yang memakai sambungan fail? Itu memisahkan ralat pemapar daripada penggantian oleh portal. Ketiga, adakah portal menulis semula URL permintaan atau membuang pengepala daripada respons? URL yang ditulis semula boleh mendarat di titik akhir yang sama sekali berbeza.
Jawab ketiga-tiganya sebelum menukar mana-mana tetapan, kerana setiap satu mempunyai ubat yang berbeza. Kerosakan pemapar milik pelayan laporan, isi yang diganti milik portal, dan pengepala yang dibuang ialah persoalan dasar, bukan pepijat.
Tulis jawapannya. Kes sokongan yang dibina daripada tiga baris itu bernilai sepuluh tangkapan skrin.
Baca respons eksport dan bukan kod status
Status HTTP yang berjaya hanya membuktikan bahawa sesuatu menjawab permintaan itu. Periksa isi dan pengepala bersama-sama, kerana kegagalan yang menarik ialah respons berjaya yang membawa kandungan yang salah.
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
Dump pengepala menunjukkan jenis kandungan dan mana-mana pelupusan kandungan yang dikembalikan oleh portal. Perintah file mengenal pasti apa sebenarnya isi itu, dan fail teks di tempat hamparan dijangka ialah halaman log masuk yang diganti secara klasik. Perintah head menunjukkan cukup untuk mengenali HTML tanpa menumpahkan seluruh laporan ke terminal.
Buang kuki sesi dan token sebelum berkongsi mana-mana bahagiannya. Tangkapan eksport yang berfungsi ialah bukti berguna, dan tangkapan sesi milik orang lain ialah insiden.
Hadkan pengecualian kepada aplikasi, bukan akaun
Jika portal menulis semula atau menyekat respons, pembaikan yang menggoda ialah mengecualikan seluruh tapak atau menjadikan laporan tanpa nama. Kedua-duanya membaiki muat turun dan membuang sebab portal itu wujud. Pengecualian yang terhad menamakan satu laluan aplikasi, satu jenis kandungan dan satu arah, dan ia kekal boleh disemak oleh sesiapa yang memiliki dasar itu.
Gunakan versi get laluan yang benar-benar anda jalankan dan tetapan aplikasinya yang didokumenkan. Pilihan yang pernah digambarkan oleh vendor sebagai membiarkan trafik tidak berubah bukan arahan umum, dan menyalinnya daripada urutan forum lama ialah cara pengecualian sementara menjadi seni bina kekal.
Jika pengecualian tidak boleh dihadkan begitu sempit, eksport itu mungkin tergolong dalam laluan dalaman dengan kaedah akses yang berbeza dan bukannya di belakang portal. Pengecualian seluruh tapak ialah keputusan pemilik portal, bukan jalan pintas untuk satu laporan.
Terima eksport itu, bukan dialog Simpan
Semakan terakhir ialah fail itu sendiri: ia dibuka, ia memegang lajur yang dijangka, dan jumlahnya sepadan dengan laporan yang diluluskan oleh pengguna.
Kemunculan dialog Simpan bukan kejayaan, dan fail yang dibuka dengan amaran pembaikan juga bukan kejayaan. Bandingkan kiraan baris dan satu nilai yang diketahui dengan laporan di skrin, kerana eksport yang dipotong lulus setiap ujian yang hanya melihat saiz fail. Kemudian eksport sekali lagi, kerana lapisan cache yang sekali menyajikan isi yang salah mungkin menyajikan yang betul pada percubaan seterusnya.
Terima aliran kerja yang diperlukan oleh pengguna, dan tidak kurang daripada itu. Muat turun yang dibuka dalam aplikasi yang salah masih merupakan eksport yang gagal.