ele*_*tor 6 asp.net-mvc report crystal-reports
我在MVC3应用程序中的普通ASP.NET aspx页面上使用Crystal报表查看器.在控制器操作中,我只是重定向到aspx页面,报告显示正常.但问题在于动态图像.我找到了最简单的解决方案,将图像路径作为报表参数传递,并将此参数设置为图像源.在Visual Studio预览中,这工作正常但在执行时我在页面上看到此错误.
"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>
Run Code Online (Sandbox Code Playgroud)
这是MVC类型的问题吗?有人可以帮忙吗?
谢谢
小智 13
我有同样的问题,但幸运的是我有一些Crystal Reports的经验.
您只需要更改Web.config,因为"path"属性设置为site root.如果您在浏览器中打开URL并从中删除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>
Run Code Online (Sandbox Code Playgroud)
最后,您必须为MVC应用程序添加一个忽略规则:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
// Here is added new ignore rule
routes.IgnoreRoute("Reports/{resource}.aspx/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)
在我的例子中,我有一个名为Reports的文件夹,其中放置了.aspx文件.我想你应该在你的情况下将其更改为ReportWebForms.
在我的情况下,我只需要忽略MVC的路由.要添加到@Hovhannes解决方案.您应该将此规则添加到Routeconfig.cs
routes.IgnoreRoute("{*allaspx}", new { allaspx = @".*(CrystalImageHandler).*" });
Run Code Online (Sandbox Code Playgroud)
小智 5
使用此代码作为 CrystalImageHandler.aspx:
<%@ Page Language="C#" AutoEventWireup="true" %>
<script runat="server" language="c#" >
protected void Page_Load(object sender, EventArgs e)
{
CrystalDecisions.Web.CrystalImageHandler handler = new CrystalDecisions.Web.CrystalImageHandler();
handler.ProcessRequest(this.Context);
}
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12089 次 |
| 最近记录: |