5

Configuré SSRS en mi servidor local y usé BIDS para crear un par de informes sobre ellos. Acceden a los datos del mismo servidor SQL donde se implementa el SSRS, y cuando los obtengo de antemano, funcionan bien. Luego los implementé en mi servidor local SSRS y accedí a ellos a través de la interfaz web de ReportManager. De nuevo funcionaron muy bien. Finalmente, los implementé en el SSRS de mi proveedor de hosting. El mismo trato; buena conectividad de datos y se ve muy bien en el ReportManager.Uso de SSRS con ASP.Net ReportViewer

La primera vez que accedo a ellos a través del ReportManager en cualquiera de los sistemas, exige mi nombre de usuario y contraseña, que en mi computadora portátil es solo el inicio de mi cuenta y mi contraseña. Para mi proveedor de hosting es el inicio de mi cuenta para ellos.

Mi problema es cuando trato de mostrar un informe usando el control ReportViewer en ASP.Net. Muy a menudo, cuando intenta renderizar, obtengo un "Inicio de sesión incorrecto" o "401: no autorizado" en lugar de mi informe. Después de mucha lectura y reflexión, creo que el problema es que debo iniciar sesión no en el servidor SQL, sino en el sitio web (servicio web?) Donde están expuestos mis informes. En este momento, si no proporciono ninguna credencial, puedo obtener mis informes locales en ReportViewer (generalmente). Sin embargo, cuando despliegue los informes en un servidor remoto, esto ya no funciona.

Después de investigar un poco, creé una clase que implementa IReportServerCredentials e intenté usarla para pasar el nombre de usuario y la contraseña, pero parece que esto no funciona. Y me estaba confundiendo si se suponía que estas credenciales fueran para la fuente de datos o para el servicio web.

Si alguien puede darme una pista sobre cómo hacer que ReportViewer inicie sesión en el servicio web de SSRS, lo agradecería mucho.

Respuesta

4

Suponiendo que haya configurado ProcessingMode = "Remote" attirbute en el visor, entonces probablemente tenga un problema de autenticación. Al usar el visor de informes en modo remoto, el informe se ejecuta en SSRS mediante la cuenta en la que se ejecuta ASP.Net. Esta cuenta debe tener acceso al servidor de informes y al informe que desea ejecutar. Lo que probablemente está sucediendo es que ASP.Net se está ejecutando bajo una cuenta que no tiene acceso a SSRS.

Si desea poder establecer las credenciales para el visor de informes, eche un vistazo a this thread para obtener una solución y un código de muestra.

+0

De hecho, recibí un error así cuando lo implementé en otra ubicación de prueba, diciendo que la cuenta NT que estaba usando no tenía los privilegios para realizar esa acción. Entender la suplantación y en qué cuenta se ejecutan mis aplicaciones es algo en lo que necesito centrarme más. Al final, pude hacer que esto funcionara al agregar un rol para "BUILTIN \ Users" de "Navegador". Funciona, pero no estoy loco porque creo que básicamente significa que el informe no está bloqueado en absoluto. Continuaré buscando las respuestas que recibo aquí. –

+0

Al final, finalmente lo descubrí examinando la clase de credenciales que construí con más cuidado, comparándola con el código de muestra que sabía que funcionaba. Resultó que estaba devolviendo "True" de mi método GetFormsCredentials(). Como nunca tuve la intención de usar la Autenticación de formularios, debería haber devuelto "False"."Todos los parámetros" out "de ese método estaban siendo NULL, por lo que la autenticación nunca se realizó correctamente, y no me di cuenta. –

+0

Impresionante. Nos encontramos con los mismos problemas cuando intentábamos integrar SSRS con nuestro aplicación web. Al final pudimos obtener los permisos correctos, pero fue doloroso. – jvilalta

1

Siempre es un reto depurar problemas de autenticación remotamente, pero es posible que pueda resolver su problema al habilitar la suplantación en su AppPool. De esta forma, cuando un usuario inicie sesión, IIS podrá conectarse a SQL Server como su usuario.

Otro enfoque podría ser el uso de Autenticación SQL; desafortunadamente, los detalles dependen de cómo tienes las cosas conectadas.

+0

Definitivamente preferiría usar Autenticación de SQL; principalmente porque nunca he entendido cómo la Autenticación de Windows hace lo que hace. Y porque en la aplicación web no hay un inicio de sesión de red involucrado. Voy a leer acerca de la suplantación. –

Cuestiones relacionadas