Crystal Reports изображений и ASP.Net MVC - PullRequest
5 голосов
/ 05 января 2010

У меня проблемы с Crystal Reports при использовании диаграмм и изображений, которые используют CrystalImageHandler.aspx. Изображение не может отображаться, и я подозреваю, что это связано с проблемой маршрутизации MVC.

Путь к изображению пути подобен этому:

SRC = "/ CrystalImageHandler.aspx? Dynamicimage = cr_tmp_image_a8301f51-26de-4869-be9f-c3c9ad9cc85e.png"

с URL-адресом, подобным следующему:

локальный: 01234 / ViewCrystalReports.aspx ID = 50

Изображение не может быть найдено разумно, потому что оно смотрит в несуществующий каталог. Как я могу изменить путь, по которому находится CrystalImageHandler.aspx? Я думаю, что если бы я ссылался из корня, проблема была бы решена, но все, что я изменял в Web.Config, не работает.

Я должен упомянуть, что это на обычной странице aspx, а не в представлении и т. Д.

Ответы [ 5 ]

6 голосов
/ 28 сентября 2011

Я решаю эту проблему, редактируя Web.Config файл

Вставьте следующую строку:

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

* позаботьтесь о том, чтобы написать свою версию номера (Version = xx.x.xxxx.x)

2 голосов
/ 08 августа 2011
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, он также может быть использован с любым дополнительным путем, который вы хотите (в данном случае / reports). Что-то, что я НИКОГДА не мог заставить обработчик сделать через конфигурацию.

2 голосов
/ 05 января 2010

Разобрался. Маршрутизация мешала генерируемой ссылке CrystalImageHandler.aspx. В Global.aspx есть следующая строка, чтобы механизм маршрутизации игнорировал файлы ресурсов:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

но это не обычный файл ресурсов, это почему-то файл aspx (кто-нибудь знает почему?)

добавление исправило это:

  routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
0 голосов
/ 02 октября 2015

Это потому, что маршрутизация мешала CrystalImageHandler.aspx. Поэтому в файле Global.asax или файле routeConfig мы можем игнорировать маршрут для файлов расширения .aspx. Вы можете игнорировать маршрут расширения .aspx, добавив следующую строку.

rout.IgnoreRoute ("{ allaspx}", новый {allaspx = @ ". .aspx (/.*)?" Event);

0 голосов
/ 25 февраля 2013

Для просмотра на локальной машине, вы добавите следующий код в веб-конфигурацию

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

...............................

<appSettings>       
<add key="CrystalImageCleaner-AutoStart" value="true" />
<add key="CrystalImageCleaner-Sleep" value="60000" />
<add key="CrystalImageCleaner-Age" value="120000" />    
</appSettings>

Следующий код предназначен для отображения на сервере

<system.webServer>      
<handlers>                
    <add name="CrystalImageHandler.aspx_GET" verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" preCondition="integratedMode"/> 
</handlers>
</system.webServer>

:) Я решу эту проблему, добавив в веб-конфигурацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...