tag route page net for asp asp.net reporting-services reporting ssrs-2008

asp.net - route - Servicios de informes: obtenga el PDF de un informe generado



select asp-for asp-items (2)

Debido a que tiene secuencias anidadas, es posible que desee cerrar la primera secuencia después de la copia para evitar un error de secuencia cerrada. Además, si obtiene un 401 no autorizado, intente con las credenciales predeterminadas.

req.UseDefaultCredentials = true; req.PreAuthenticate = true; req.Credentials = CredentialCache.DefaultCredentials; HttpWebResponse HttpWResp = (HttpWebResponse)req.GetResponse(); Stream fStream = HttpWResp.GetResponseStream(); //Now turn around and send this as the response.. byte[] fileBytes = ReadFully(fStream); // Could save to a database or file here as well. HttpWResp.Close();

Tengo un servidor de servicios de informes que ya tiene algunos informes en ejecución, y ahora necesito generarlos a través de un sitio web personalizado (que ejecute asp.net MVC3).

Necesito recuperar este informe como secuencia / byte para enviarlo al usuario. No hay "visor de informes" más o menos.

La última vez que utilicé los servicios de informes fue con sql 2005, y deberíamos agregar como referencia un oscuro archivo .mx.

¿Qué ocurre ahora, con el servidor sql informando 2008 R2, .Net4 y visual studio 2010? No puedo encontrar un tutorial que explique todo.

(De hecho, no puedo encontrar un tutorial donde no haya ningún visor de informes para sql 2008 r2)


Se proporcionan varios métodos en MSDN . He utilizado el acceso URL a menudo para obtener botones PDF rápidos y sencillos en una aplicación ASP .NET.

Aquí hay un código de hack rápido haciendo esto. Se puede limpiar para utilizar la autenticación integrada, y hay muchas maneras en que puede almacenar el nombre del informe. (Corté y pegué esto de un código viejo que tenía que almacenaría un informe en una base de datos y luego podría devolverlo desde el DB.

// First read in the report into memory. string strReportUser = "RSUserName"; string strReportUserPW = "MySecretPassword"; string strReportUserDomain = "DomainName"; string sTargetURL = "http://SqlServer/ReportServer?" + "/MyReportFolder/Report1&rs:Command=Render&rs:format=PDF&ReportParam=" + ParamValue; HttpWebRequest req = (HttpWebRequest)WebRequest.Create( sTargetURL ); req.PreAuthenticate = true; req.Credentials = new System.Net.NetworkCredential( strReportUser, strReportUserPW, strReportUserDomain ); HttpWebResponse HttpWResp = (HttpWebResponse)req.GetResponse(); Stream fStream = HttpWResp.GetResponseStream(); //Now turn around and send this as the response.. byte[] fileBytes = ReadFully( fStream ); // Could save to a database or file here as well. Response.Clear(); Response.ContentType = "application/pdf"; Response.AddHeader( "content-disposition", "attachment; filename=/"Report For " + ParamValue + ".pdf/"" ); Response.BinaryWrite( fileBytes ); Response.Flush(); HttpWResp.Close(); Response.End();

ReadFully es

public static byte[] ReadFully( Stream input ) { using ( MemoryStream ms = new MemoryStream() ) { input.CopyTo( ms ); return ms.ToArray(); } }