2010-05-27 50 views
1

我在MVC应用程序的Webform中使用Crystal Reports。但是,在ASP.NET开发服务器和IIS 7(Win7x64上)中,报表中的图像未显示。在ASP.NET MVC中未加载Crystal Reports图像

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

到目前为止,我有

  1. 添加以下到我的appSettings(通过http://www.mail-archive.com/[email protected]/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. 增加(通过Crystal Reports Images and ASP.Net MVC)以下我的Global.asax.cs routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");

routes.IgnoreRoute("CrystalImageHandler.aspx");

任何想法为什么图像仍然404?

+0

@bummi的aspx文件的文件夹名称,这个问题早在“原始”通过2年,这是怎么重复? – 2015-12-21 11:58:46

+0

虽然我同意在其他问题上得票最多的答案似乎更彻底,但我不得不说这个问题更好。它被很好地研究,并且展示了尝试使用来自网络的其他潜在答案来达成解决方案的步骤。请不要因为我所做的工作而让我受罚,使其成为一个值得回答的问题。 – 2015-12-21 12:15:40

+0

Hi @bummi,这显然不是这次讨论的适当渠道,我们该如何继续呢? – 2015-12-21 12:20:27

回答

0

您是否试过将其添加到system.webServer/handlers?这应该修复它在IIS7上,但它是奇怪的,它不适用于开发服务器W/O。

+0

我实际上已经将它添加到IIS7应用程序web.config,无济于事。我怀疑,如果它不会在开发工作。服务器它不会在IIS上工作。 – 2010-05-28 14:15:06

1

我已经尝试了许多方法,可以推测这是可以工作的。没有。所以,我最终决定采用作弊:

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

    } 
} 

我加入到这个控制器路由匹配水晶所期待的(./CrystalImageHandler.aspx),并使用该控制器执行操作时要调用的处理程序。不漂亮,但功能。

8

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

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

我在routeConfig中添加了上面的代码,它不起作用,然后我在web.config文件中添加了水晶报告处理程序'' 现在它的工作非常完美。 谢谢 – 2016-09-01 04:31:14

0

添加这RouteConfig.cs文件

routes.IgnoreRoute( “报告/ {}资源的.aspx/{*} PATHINFO”);

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