0

我正在使用 Crystal Reports for VS2010 service pack 9 在 Windows 2012 R2 上运行 IIS 8.5。

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

我尝试添加看似无效的处理程序:

<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 设置为虚拟目录 - 这就是所有查看器按钮图像等都正确显示的原因。

PS Fiddler4 也为图像提供状态代码 302(找到?)!

有任何想法吗?我对这个有点难过。

4

2 回答 2

2

问题是双重的...... 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>
于 2014-12-23T13:10:16.677 回答
2

嗨,我已经为类似的问题苦苦挣扎了一段时间。

我希望这个解决方案可以帮助你。

网络配置更改:

<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);
    }
}

这将帮助您解决问题。

于 2018-07-10T09:59:28.473 回答