2012-07-06 303 views
5

我在MVC3应用程序的普通ASP.NET aspx页面上使用Crystal报表查看器。在控制器操作中,我只是重定向到aspx页面,报表显示正常。但问题在于动态图像。我找到了最简单的解决方案,它将图像路径作为报告参数传递,并将此参数设置为图像源。在Visual Studio预览版中,此工作正常,但执行时我在页面上看到此错误。CrystalImageHandler.aspx找不到

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

因此,我假设,没有以前的水晶报告经验,问题是在CrystalImageHandler.aspx。 我在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> 

这是一个MVC类型的问题?任何人都可以帮忙吗?

感谢您

+0

我放弃了水晶为我的解决方案报告的目录名。太多的问题,它是我的VS 2010经常崩溃。我现在将创建html页面以在应用程序中的页面上显示报告,并使用我发现非常好的iTextSharp库来创建PDF以供下载。这样,我可以控制报表创建过程中的每一行,而不像BlackBox Crystal Reports。这可能会帮助某人决定在与我处于同一位置时采取什么方法。 – elector 2012-07-11 13:55:50

+1

[Crystal Reports Images在ASP.NET MVC中不加载]的可能重复(http://stackoverflow.com/questions/2925465/crystal-reports-images-not-loading-in-asp-net-mvc) – rene 2015-12-21 14:16:43

回答

9

我有同样的问题,但幸运的是我有水晶报表的一些经验。

您只需更改Web.config,因为“路径”属性设置为站点根目录。 如果您在浏览器中打开网址并从中删除ReportWebForms,它将起作用。

其实我刚加入2条更多配置线:

<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> 

最后,你必须添加一个无视规则MVC应用程序的路径:

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

在我来说,我有一个名为的文件夹报告其中放置.aspx文件。我想你应该改变这个ReportWebForms在你的情况。

+0

我给了正如我在问题的评论中所说的那样,但我会接受这个答案,因为它可能会帮助其他人。 – elector 2013-11-05 13:17:47

+0

总是很难解决这个简单的问题!在我的情况下,只需添加另一个文件夹名称ignoreRoute就足以解决此问题。 – reckface 2015-06-25 17:24:31

5

在我来说,我只需要忽略MVC的routing.To添加到@Hovhannes solution.You应该添加此规则Routeconfig.cs

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

接受的答案在之前的每个部署中都有效,直到今天。出于某种原因,没有显示图像,因为它将CrystalImageHangdler.aspx附加到当前网址(http://test.server/report.aspxCrystalImageHAndler.aspx)。但增加这个忽略路由是唯一的方法。 – reckface 2015-08-18 16:31:08

1

答案: 添加这RouteConfig.cs文件

routes.IgnoreRoute(“Reports/{resource} .aspx/{* pathInfo}”);

注:“报告”是其中包含水晶报表查看aspx页面enter image description here