MVC中使用水晶报表,图表无法显示的问题

来源:互联网 发布:nb化学实验室软件 编辑:程序博客网 时间:2024/05/01 10:28

这两天处理在mvc中使用水晶报表,报表内容显示正常,但再插入图表后,总是无法显示,出现红X,查看图片路径显示为

“http://localhost:8396/CrystalImageHandler.aspx?dynamicimage=cr_tmp_image_dc815016-6233-4763-9c61-2e388687a444.png”

因为图表是通过CrystalImageHandler来动态生成的,查找web.config文件“httpHandlers”配置节,存在CrystalImageHandler的配置:

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

按道理图片是可以动态生成的,经过反复对web.config修改,发现问题出现在下面的“httpModules”配置节中:

 

 

“<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>”

 

 

这段配置是mvc中的路由配置节点,是mvc中路由的配置节点,如果删掉此节点,项目中的webform窗体的报表显示正常了,图表请求”CrystalImageHandler.aspx“不会被过滤,但路由会不工作,整个项目“垮”了。

 

 

于是得出结果:“CrystalImageHandler.aspx ”此种请求不能经“UrlRoutingModule”路由解析(?)。

 

 

Global.asax 中可以配置路由!

 

修改Global.asax文件,禁用“CrystalImageHandler.aspx ”请求的路由。修改代码如下:

 public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");


routes.IgnoreRoute("CrystalImageHandler.aspx");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);

}

 

图表显示正常了!!!