水晶报告 图形图像不显示

本文关键字:显示 图形图像 报告 水晶 | 更新日期: 2023-09-27 18:34:18

我在Windows 2012 R2上运行IIS 8.5,使用VS2010 Service Pack 9的Crystal Reports。

无论我做什么,我都无法让图像显示在查看器中......报告的所有其他元素都很好。

我尝试添加似乎没有效果的处理程序:

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

站点/应用程序池在本地帐户下运行,此帐户具有 C:/Windows/Temp 的完全权限 - 网络服务也是如此。

此外,我可以看到在 C:/Windows/Temp 中创建的图形图像....盛开的查看器不会显示它。

该站点作为虚拟目录运行,父站点aspnet_client设置为虚拟目录 - 这就是为什么所有查看器按钮图像等都正确显示的原因。

附言Fiddler4也为图像提供了302(找到?

有什么想法吗?我对这个有点困惑。

水晶报告 图形图像不显示

问题是双重的...CrystalImagehandler.aspx 没有被分配,MVC 中的路由在定义后就会阻止它。

解决方案是在 RegisterRoutes() 中指定一个 IgnoreRoute 条目

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

并在 web.config 中放置两个条目...

<system.web>
  <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>

<system.webServer>
    <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>

嗨,我一直在为类似的问题而苦苦挣扎。

我希望这个解决方案可能对你有所帮助。

网页配置更改:

<httpHandlers>
      <add verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" />
    </httpHandlers>
    <handlers>
      <remove name="CrystalImageHandler.aspx_GET" />
      <add name="CrystalImageHandler.aspx_GET" verb="GET" path="CrystalImageHandler" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304" preCondition="integratedMode"/>
    </handlers>

运行代码段展开代码段注意*:"处理程序路径"字段没有".aspx"扩展名。将此代码块添加到 global.asax 中.cs

protected void Application_BeginRequest(object sender, EventArgs e)
{
    var p = Request.Path.ToLower().Trim();
    if (p.EndsWith("/crystalimagehandler.aspx") && p != "/crystalimagehandler.aspx")
    {
        var fullPath = Request.Url.AbsoluteUri.ToLower();
        var NewURL = fullPath.Replace(".aspx", "");
        Response.Redirect(NewURL);
    }
}

这将帮助您解决问题。