2012-07-06 21 views
5

Estoy usando el visor de informes Crystal en una página aspx ASP.NET normal en una aplicación MVC3. En una acción de controlador, simplemente estoy redireccionando a la página aspx y el informe muestra bien. Pero el problema es con imágenes dinámicas. He encontrado la solución más simple para esto y para pasar la ruta de la imagen como un parámetro de informe y establecer este parámetro como fuente de imagen. En la vista previa de Visual Studio, esto funciona bien, pero cuando lo ejecuto veo este error en la página.CrystalImageHandler.aspx no encontrado

"NetworkError: 404 Not Found - server/ReportWebForms/CrystalImageHandler.aspx?dynamicimage=cr_tmp_image_4fbcb73a-e001-4365-84fc-164788dd1605.png"

así que supongo que, al no tener experiencia previa con informes de Crystal, que el problema está en crystalimagehandler.aspx. tengo estas entradas en el Web.config:

<httpHandlers><add verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/></httpHandlers></system.web> 
    <handlers><add name="CrystalImageHandler.aspx_GET" verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" preCondition="integratedMode"/></handlers></system.webServer> 

Es este un tipo de MVC de un problema? ¿Alguien puede ayudarme con esto por favor?

Gracias

+0

me di por vencido en Crystal Reports para mi solución. Demasiados problemas con eso y fue CRASHING my VS 2010 con demasiada frecuencia. Ahora crearé páginas html para mostrar los informes en la página en la aplicación y usaré la biblioteca iTextSharp, que me parece muy buena, para crear archivos PDF para descargar. De esta forma tengo control sobre cada línea en el proceso de creación de informes a diferencia de BlackBox Crystal Reports. ESTO PODRÍA AYUDAR A ALGUIEN A DECIDIR QUÉ ACERCAMIENTO TOMAR CUANDO ESTÉ EN LA MISMA POSICIÓN QUE YO. – elector

+1

Posible duplicado de [Las imágenes de Crystal Reports no se cargan en ASP.NET MVC] (http://stackoverflow.com/questions/2925465/crystal-reports-images-not-loading-in-asp-net-mvc) – rene

Respuesta

9

he tenido el mismo problema, pero afortunadamente tengo algo de experiencia con Crystal Reports.

Solo necesita cambiar el Web.config, porque el atributo "ruta" se establece en la raíz del sitio. Funcionará si abre la url en el navegador y elimina el ReportWebForms.

En realidad me acaba de añadir 2 líneas más de configuración:

<system.web> 
    <httpHandlers> 
     <add verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" /> 
     <!-- Added --> 
     <add verb="GET" path="Reports/CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" /> 
     <add verb="GET,HEAD" path="asset.axd" validate="false" type="Telerik.Web.Mvc.WebAssetHttpHandler, Telerik.Web.Mvc" /> 
    </httpHandlers> 
</system.web> 

<system.webServer> 
    <handlers> 
     <add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" /> 
     <add name="CrystalImageHandler.aspx_GET" verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" preCondition="integratedMode" /> 
     <!-- Added --> 
     <add name="CrystalImageHandler.aspx_GETR" verb="GET" path="Reports/CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" preCondition="integratedMode" /> 
     <remove name="asset" /> 
     <add name="asset" preCondition="integratedMode" verb="GET,HEAD" path="asset.axd" type="Telerik.Web.Mvc.WebAssetHttpHandler, Telerik.Web.Mvc" /> 
    </handlers> 
</system.webServer> 

Y por último, hay que añadir una regla ignorar la ruta para la aplicación MVC:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); 
// Here is added new ignore rule 
routes.IgnoreRoute("Reports/{resource}.aspx/{*pathInfo}"); 

En mi caso tengo una carpeta llamada Informes donde se coloca el archivo .aspx. Supongo que deberías cambiar esto a ReportWebForms en tu caso.

+0

di en los informes de Crystal, como dije en el comentario de la pregunta, pero lo aceptaré como una respuesta, ya que podría ayudar a alguien más. – elector

+0

¡Siempre es difícil solucionar este simple problema!En mi caso, simplemente agregar otro ignoreRoute con el nombre de la carpeta fue suficiente para resolver este problema. – reckface

5

En mi caso yo sólo tenía que ignorar routing.To de MVC añadir a @Hovhannes solution.You debe añadir esta regla a Routeconfig.cs

routes.IgnoreRoute("{*allaspx}", new { allaspx = @".*(CrystalImageHandler).*" }); 
+0

La respuesta aceptada había funcionado para todas las implementaciones anteriores, hasta hoy. Por alguna razón, nada mostraba las imágenes, porque estaba agregando CrystalImageHangdler.aspx a la url actual (http: //test.server/report.aspxCrystalImageHAndler.aspx). Pero agregar esto ignorarRuta era la única forma de evitarlo. – reckface

1

Respuestas: Añadir este archivo en RouteConfig.cs

routes.IgnoreRoute ("Informes/{recurso} .aspx/{* pathInfo}");

Nota: "Informes" es el nombre del directorio que contiene los informes de visualización de cristal aspx enter image description here