【问题标题】:Crystal Reports Images not loading in ASP.NET MVCCrystal Reports 图像未在 ASP.NET MVC 中加载
【发布时间】:2010-05-27 22:26:37
【问题描述】:

我在 MVC 应用程序内的 Web 表单中使用 Crystal Reports。但是,在 ASP.NET 开发服务器和 IIS 7(在 Win7x64 上)上都不会显示报告中的图像。

我从许多其他类似的问题中知道 CrystalImageHandler HTTP 处理程序负责渲染图像,但我尝试了所有常用的解决方案都无济于事。

到目前为止,我已经

  1. 将以下内容添加到我的appSettings(通过http://www.mail-archive.com/bdotnet@groups.msn.com/msg26882.html

    <add key="CrystalImageCleaner-AutoStart" value="true" />

    <add key="CrystalImageCleaner-Sleep" value="60000" />

    <add key="CrystalImageCleaner-Age" value="120000" />

  2. 将以下 httpHandler 添加到 system.web/httpHandlers(通过 https://stackoverflow.com/questions/2253682/crystal-report-viewer-control-isnt-loading-the-images-inside-the-report

    <add verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=12.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>

  3. 在我的 Global.asax.cs 中添加了以下内容(通过 Crystal Reports Images and ASP.Net MVCroutes.IgnoreRoute("{resource}.aspx/{*pathInfo}");

routes.IgnoreRoute("CrystalImageHandler.aspx");

关于为什么图像仍然是 404 的任何想法?

【问题讨论】:

  • @bummi,这个问题比“原始”早了 2 年,这是怎么重复的?
  • 虽然我同意另一个问题上投票最多的答案似乎更彻底,但我不得不说这个问题更好。它进行了很好的研究,并显示了尝试使用来自网络的其他潜在答案来达成解决方案所采取的步骤。请不要因为我为使这个问题变得如此有价值所做的工作而惩罚我。
  • 嗨@bummi,这显然不是这个讨论的合适渠道,我们该如何继续?

标签: asp.net asp.net-mvc crystal-reports


【解决方案1】:

我有类似的问题。这对我有帮助。

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

【讨论】:

  • 我在上面添加了 routeConfig 它不起作用然后我在 web.config 文件<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" /> 中添加了水晶报告处理程序现在它的工作完美。谢谢
【解决方案2】:

我已经尝试了许多可以让它发挥作用的方法。没有。所以我最终决定作弊:

public class CrystalImageHandlerController : Controller
{
    //
    // GET: /Reports/CrystalImageHandler.aspx

    public ActionResult Index()
    {
        return Content("");
    }

    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {

        var handler = new CrystalDecisions.Web.CrystalImageHandler();
        var app = (HttpApplication)filterContext.RequestContext.HttpContext.GetService(typeof(HttpApplication));
        if (app == null) return;

        handler.ProcessRequest(app.Context);

    }
}

我添加了一条到该控制器的路由,该路由与 Crystal 期望的 (./CrystalImageHandler.aspx) 相匹配,并使用该控制器在执行操作时调用处理程序。不漂亮,但实用。

【讨论】:

    【解决方案3】:

    您是否尝试将其添加到system.webServer/handlers?这应该可以在 IIS7 上修复它,但奇怪的是它在没有它的开发服务器上不起作用。

    【讨论】:

    • 我实际上确实将它添加到 IIS7 应用程序 web.config 中,但无济于事。我怀疑如果它在开发人员上不起作用。服务器它不会在 IIS 上工作。
    【解决方案4】:

    在 RouteConfig.cs 文件中添加这个

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

    注意 “Reports”是包含报表查看器的aspx文件的文件夹名称 根据您的应用程序更改此文件夹名称

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多