水晶报告 图形图像不显示
本文关键字:显示 图形图像 报告 水晶 | 更新日期: 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);
}
}
这将帮助您解决问题。