2012-07-06 352 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