2012-07-06 45 views
5

Tôi đang sử dụng trình xem báo cáo Crystal trên trang aspx ASP.NET thông thường trong ứng dụng MVC3. Trong một hành động điều khiển tôi chỉ đơn giản là chuyển hướng đến trang aspx và báo cáo cho thấy tốt. Nhưng vấn đề là với hình ảnh động. Tôi đã tìm thấy giải pháp đơn giản nhất cho điều này và điều này để chuyển đường dẫn hình ảnh dưới dạng thông số báo cáo và đặt tham số này làm nguồn hình ảnh. Trong Visual Studio xem trước này hoạt động tốt nhưng khi thực hiện tôi thấy lỗi này trên trang.CrystalImageHandler.aspx không tìm thấy

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

Vì vậy, tôi cho rằng, không có kinh nghiệm trước đây với báo cáo tinh thể, vấn đề nằm trong CrystalImageHandler.aspx. Tôi có các mục này trong 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> 

Đây có phải là loại MVC của sự cố không? Ai đó làm ơn có thể giúp với?

Cảm ơn bạn

+0

Tôi đã từ bỏ các báo cáo Crystal cho giải pháp của mình. Quá nhiều vấn đề với nó và nó đã được CRASHING VS 2010 của tôi quá thường xuyên. Bây giờ tôi sẽ tạo các trang html để hiển thị các báo cáo trên trang trong ứng dụng và sẽ sử dụng thư viện iTextSharp, mà tôi thấy rất hay, để tạo các tệp PDF để tải xuống. Bằng cách này, tôi có quyền kiểm soát tất cả các dòng trong quá trình tạo báo cáo không giống như BlackBox Crystal Reports. TUYÊN BỐ NÀY CÓ THỂ GIÚP MỘT SỐ QUYẾT ĐỊNH NÀO ĐỂ TIẾP CẬN TỚI KHI TRONG VỊ TRÍ VỊ TRÍ NHƯ TÔI ĐÃ. – elector

+1

Bản sao có thể có của [Hình ảnh báo cáo tinh thể không tải trong ASP.NET MVC] (http://stackoverflow.com/questions/2925465/crystal-reports-images-not-loading-in-asp-net-mvc) – rene

Trả lời

9

Tôi gặp vấn đề tương tự, nhưng may mắn thay tôi có một số kinh nghiệm với Crystal Reports.

Bạn chỉ cần thay đổi Web.config, vì thuộc tính "đường dẫn" được đặt thành gốc trang. Nó sẽ hoạt động nếu bạn mở url trong trình duyệt và xóa ReportWebForms khỏi trình duyệt đó.

Thật sự tôi vừa bổ sung thêm 2 dòng cấu hình:

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

Và cuối cùng bạn phải thêm một lờ đi cai trị các tuyến đường cho các ứng dụng MVC:

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

Trong trường hợp của tôi, tôi có một thư mục có tên là Báo cáo nơi tệp .aspx được đặt. Tôi đoán bạn nên thay đổi điều này thành ReportWebForms trong trường hợp của bạn.

+0

Tôi đã cung cấp trên báo cáo Crystal, như tôi đã nói trong phần bình luận của câu hỏi, nhưng tôi sẽ chấp nhận câu trả lời này vì nó có thể giúp đỡ người khác. – elector

+0

Luôn khó khắc phục sự cố đơn giản này!Trong trường hợp của tôi chỉ cần thêm một ignoreRoute với tên thư mục là đủ để giải quyết vấn đề này. – reckface

5

Trong trường hợp của tôi, tôi chỉ phải bỏ qua routing.To MVC của thêm vào @Hovhannes solution.You nên thêm quy tắc này để Routeconfig.cs

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

Câu trả lời được chấp nhận đã hoạt động cho mọi lần triển khai trước đó, cho đến ngày hôm nay. Đối với một số lý do không có gì hiển thị hình ảnh, bởi vì nó đã được thêm CrystalImageHangdler.aspx vào url hiện tại (http: //test.server/report.aspxCrystalImageHAndler.aspx). Nhưng thêm ignoreRoute này là cách duy nhất xung quanh nó. – reckface

1

Đáp: Thêm này trong tập tin RouteConfig.cs

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

Lưu ý: "Báo cáo" là tên thư mục chứa báo cáo tinh thể xem trang aspx enter image description here