A exportación de SSRS falla a través dun portal VPN sen cliente: que cambia
A páxina do informe demostra a representación, non a exportación. Siga a solicitude de exportación polo portal, compare as cabeceiras e o corpo, e despois limite calquera excepción con precisión.
O informe ábrese no navegador, os parámetros represéntanse e o botón de exportación produce un erro, unha descarga baleira ou un ficheiro que a folla de cálculo se nega a abrir. Esa combinación ten unha forma estándar. Unha páxina de informe que funciona probou a representación e a autenticación, e nada máis. A exportación é unha solicitude separada coa súa propia resposta, e a través dun portal sen cliente tamén cruza unha capa de reescritura que nunca se deseñou para descargas de ficheiros.
Dous camiños, unha páxina que funciona
Representar e exportar son operacións distintas aínda que comecen desde o mesmo botón. O servidor de informes representa a páxina para un navegador e prepara a exportación mediante unha extensión de saída diferente co seu propio tipo de contido e o seu propio comportamento ante erros, como describe a documentación de exportación. Un portal que deixa pasar perfectamente a primeira aínda pode estragar a segunda, porque a segunda é unha resposta que o portal non esperaba ver. As dúas comparten unha sesión e un enderezo, e case nada máis.
Trate a páxina que funciona só como proba de autenticación e accesibilidade. Demostra que a conta pode chegar ao servidor de informes e que o portal reenvía HTML. Non di nada sobre respostas de ficheiros, cabeceiras de disposición de contido ou redireccións que rematan nunha descarga en lugar dun documento.
Esa é toda a razón para comparar o camiño de exportación por separado en lugar de volver probar a páxina que xa funciona. Dúas solicitudes que comparten unha sesión seguen sendo dúas solicitudes.
Tres condicións que deciden onde se rompe a exportación
Tres preguntas sitúan o fallo rapidamente, e cada resposta apunta a un propietario distinto.
Primeiro, expórtase correctamente o mesmo informe, a mesma conta e o mesmo formato desde a rede interna? Se é así, o servidor de informes e o seu representador están ben e a diferenza está na ruta de acceso. Segundo, a resposta fallida leva un tipo de contido de ficheiro, ou unha páxina HTML cunha extensión de ficheiro? Iso separa un erro do representador dunha substitución do portal. Terceiro, o portal reescribe o URL da solicitude ou elimina cabeceiras da resposta? Un URL reescrito pode aterrar nun punto final completamente distinto.
Responda as tres antes de cambiar calquera axuste, porque cada unha ten un remedio distinto. Un fallo do representador corresponde ao servidor de informes, un corpo substituído corresponde ao portal, e unha cabeceira eliminada é unha cuestión de política, non un erro.
Anote as respostas. Un caso de soporte construído con esas tres liñas vale dez capturas de pantalla.
Lea a resposta de exportación en lugar do código de estado
Un estado HTTP correcto só demostra que algo respondeu á solicitude. Inspeccione o corpo e as cabeceiras xuntos, porque o fallo interesante é unha resposta correcta que leva o contido equivocado.
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
O volcado de cabeceiras mostra o tipo de contido e calquera disposición de contido que devolvese o portal. O comando file identifica que é realmente o corpo, e un ficheiro de texto onde se esperaba unha folla de cálculo é a clásica páxina de inicio de sesión substituída. O comando head mostra o suficiente para recoñecer HTML sen volcar un informe enteiro nun terminal.
Elimine as cookies de sesión e os testemuños antes de compartir calquera parte. Unha captura dunha exportación que funciona é unha proba útil, e unha captura dunha sesión que pertence a outra persoa é un incidente.
Limite a excepción á aplicación, non á conta
Se o portal reescribe ou bloquea a resposta, a reparación tentadora é eximir todo o sitio ou facer anónimo o informe. Ambas as dúas arranxan a descarga e eliminan a razón pola que existe o portal. Unha excepción limitada nomea unha ruta de aplicación, un tipo de contido e unha dirección, e segue sendo revisable por quen posúe a política.
Use a versión da pasarela que realmente executa e a súa configuración de aplicación documentada. Unha opción que un provedor describiu unha vez como deixar o tráfico sen cambios non é unha instrución xeral, e copiala dun fío de foro antigo é como unha excepción temporal se converte en arquitectura permanente.
Se a excepción non se pode limitar tan estreitamente, a exportación probablemente pertence á ruta interna cun método de acceso distinto en lugar de detrás do portal. Unha exención para todo o sitio é unha decisión do propietario do portal, non un rodeo para un informe.
Acepte a exportación, non o diálogo de gardar
A última comprobación é o ficheiro mesmo: ábrese, contén as columnas esperadas e os seus totais coinciden co informe que aprobou o usuario.
Que apareza un diálogo de gardar non é éxito, e un ficheiro que se abre cun aviso de reparación tampouco é éxito. Compare un reconto de filas e un valor coñecido co informe na pantalla, porque unha exportación truncada supera calquera proba que só mire o tamaño do ficheiro. Despois exporte unha segunda vez, porque unha capa de caché que unha vez serve o corpo equivocado pode servir o correcto no seguinte intento.
Acepte o fluxo de traballo que o usuario necesitaba, e nada menos que iso. Unha descarga que se abre na aplicación equivocada segue sendo unha exportación fallida.