Infragistics. “Can not establish a connection With The Report Server.”

Desde este blog quiero dar las gracias al soporte técnico de Infragistics. Nos ha costado dar con la solución, pero finalmente hemos podido mostrar nuestro informe con el visor de HTML 5 que esta empresa proporciona a sus clientes para desarrollos con ASP.Net MVC y jQuery.

  1. Principalmente el problema era que mi proyecto que tan solo debía mostrar un informe en el navegador, lo hacía perfectamente cuando estaba en desarrollo, pero cuando lo subía al servidor IIS, siempre me daba el error “Can not establish a connection With The Report Server.”
  2. Mis dudas iniciales fueron:
    1. Quizás sea por usar IIS 8?
    2. Quizás porque el servidor es un Windows 2012?
    3. O tal vez problemas con los endpoints en Azure?
    4. O el framework 4.5?
  3. Me puse en contacto con soporte de Infragistics, y el primer técnico me paso un par de enlaces, que no tenían mucha chicha.
  4. Me pasaron a otro técnico, también me mando una ayuda, pero que tampoco resolvió el problema. Pero el técnico posteriormente me hizo una pregunta importante. “¿funciona el WCF en el propio servidor?”. Bien, aquí empezaba lo bueno. Los informes necesitan de un servicio WCF, y vaya, IIS 8 viene con estos servicios “disabled”.
  5. Por tanto, primer paso, activarlos.
  6. Ya pudiendo acceder al .svc (http://localhost/reporting/ReportService1.svc), tan solo quedaba probar el informe y esperar que todo fuera ok.
  7. No fue así, ya con otro técnico (el tercero) me indica que las .dll que se añaden al proyecto en desarrollo, no son todas las necesarias para que el informe se muestre (http://help.infragistics.com/NetAdvantage/reporting/2013.1/CLR4.0?page=Assemblies_Needed_for_Distribution.html) Hay tres .dll, que no se añaden automáticamente al proyecto, pero sí que son necesarias:

InfragisticsWPF4.Reports.Controls.Common.v13.1.dll

InfragisticsWPF4.Reports.Controls.Charts.XamDataChart.v13.1.dll

InfragisticsWPF4.Reports.Controls.DataVisualization.v13.1.dll

  1. Las añado, y por fin, FUNCIONA!
  2. Pero CUIDADO, funciona si llamo al informe mediante HTTP, pero si lo hago mediante HTTPS, NO VA! Es decir, http://xxxx.es/home/report => funciona, pero https://xxxx.es/home/report => no funciona (error “Can not establish a connection With The Report Server.”)
  3. Aquí es donde empieza a complicarse la cosa, tras 20 días de dimes y diretes, el técnico me envía la solución, la cual plasmo tal cual para todos aquellos que os encontréis con el mismo problema:

1)      You need to change the service endpoint for the serviceEndpointUri to point to the https endpoint you want to use.

//for https

    var serviceEndpointSecure = “https://localhost:44300/ReportService1.svc/ajaxAddress/”;

 
 

 
 

2)      You’ll need to change the configurations in the webconfig to add an endpoint that allows https. Here are the detailed steps.

2.1)Define an endpoint with the same address which you’ll use as the service endpoint url:

<endpoint address=https://localhost:44300/ReportService1.svc/ajaxAddress

          binding=webHttpBinding name=webHttpBinding

contract=Infragistics.Reports.Server.IReportProcessorService

bindingConfiguration=TransportwebHttpBinding behaviorConfiguration=JsonFaultBehavior  >

2.2)Define the webHttpBinding:

<webHttpBinding>

        <binding name=TransportwebHttpBinding>

          <security mode=Transport>

          </security>

        </binding>

      </webHttpBinding>

 
 

Note that the bindingConfiguration from the endpoint should match with the binding’s name. In this case we need a binding with security mode set to transport.

 
 

2.3) EndPoint behavior. The service usually adds this automatically however note the JsonFaultBehavior there:

 
 

<endpointBehaviors>

        <behavior name=SilverlightFaultBehavior>

          <silverlightFaults />

        </behavior>

        <behavior name=JsonFaultBehavior >

          <enableWebScript />

          <webHttp/>

          <jsonFaults  />

        </behavior>

      </endpointBehaviors>

 
 

It will be the behaviorConfiguration for the endpoint that will be used.

 
 

 
 

If you want to allow normal http requests you’ll need to have a separate endpoint for them. For example:

<endpoint address=ajaxAddress behaviorConfiguration=JsonFaultBehavior

         binding=webHttpBinding contract=Infragistics.Reports.Server.IReportProcessorService />

 
 

In which case the serviceEndpointUri needs to point to that endpoint. For example:

//for http

    var serviceEndpoint = http://localhost:26224/ReportService1.svc/ajaxAddress/&#8221;;

 

Muchas gracias Maya Kirova, ya que sin ti, hubiera sido difícil dar con la solución, y también dar las gracias al resto de técnicos que poco a poco fueron abriéndome los ojos.

Pero sí quiero dar un tirón de orejas al señor de Infragistics que en este post http://www.infragistics.com/community/blogs/damyan_petev/archive/2012/07/24/html5-report-viewer-taking-your-reports-further.aspx dice literalmente:

The Web Application

To use the HTML5 viewer you would need to host it and the resources described above(copy the ‘js’ folder to your project). One you have that add a reference to the report class library project. Also using the Add > New Item.. menu choose Infragistics > Reporting > Infragistics Report Service and add that to your project as well. Doing that will add all the required references as well register http handler for the resources, service endpoints and a few other settings. The service will be the main star of your reporting solution and will create reports, manage sessions and provide recourses for the viewer. And you don’t need to write any code for that!

 

Está claro, que para que funcionen los informes, hace falta un poquito más de ayuda, sobre todo si se necesita que funcionen mediante SSL.

J

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s