Telerik Reporting preview Nuget packages with ASP.NET5 RC1

5 posts, 0 answers
  1. KS
    KS avatar
    5 posts
    Member since:
    Dec 2012

    Posted 05 Apr Link to this post

    Requirements

    Telerik Product and Version

    Reporting Q1 2016 +

    Supported Browsers and Platforms

    ASP.NET5 RC1, DNX451

    Components/Widgets used (JS frameworks, etc.)

    HTML5 Viewer


    PROJECT DESCRIPTION 
    Demo project based on the HTML5 Report Viewer and ASP.NET 5 help article and ASP.NET 5 RC1.

    Note that the packages are only for educational purposes.

     

  2. David
    David avatar
    1 posts
    Member since:
    May 2016

    Posted 20 May in reply to KS Link to this post

    Hi,

    That is helpful.  Thanks.  I have a few of questions.

    I ran MVC6DemoRC1 along with mvc5reportconsumer (downloaded from http://www.telerik.com/blogs/consuming-telerik-rest-service-reports-in-asp.net-mvc-5).  The Report Viewer displays.  However, rather than displaying the report, it shows the error:  "Client with ID '[object Object]' not found. Expired."

    Is it possible to pass a filepath as a parameter, generate a report, and save it to the specified, PDF file, without displaying the report to the user?

    I have an existing, MVC 6 application, using ASP.NET Identity, that will call the reports.  I do not want all users to be able to access all reports.  Also, I may have to display reports over the Internet; however, unauthenticated users should not be able to access reports.  Since Telerik.Reporting operates as a RESTful service, what are the security options?  I realize that if I incorporate the Telerik.Reporting RESTful service into my existing app, I can apply Identity authorization rules to the controller.  Is it possible to limit report access beyond that?  If I implement Telerik.Reporting as a separate server, is it possible to return the generated report to the calling application for display?  In that way, the Telerik.Reporting server does not have to face the Internet.

    Thanks,

    David

  3. Stef
    Admin
    Stef avatar
    3048 posts

    Posted 25 May Link to this post

    Hello David,

    Telerik Viewers and the ReportProcessor can process any Telerik.Reporting.Report object - designed by Vs Report Designer or in XML by the Standalone Report Designer, created at run-time or stored as XML. The report has to be wrapped in the corresponding Report Source in order to be handled - Report Sources.

    If you want to use a file like TRDX or TRDP, you can pass a relative path to the file on the server. The relative path will be mapped to the folder specified in the ReportFilerResolver (ReportscontrollerBase settings). Note that XML schema 4.0 and TRDP files are introduced as of R2 2016. Previous Telerik Reporting versions work only with TRDX files with schema number less than 4.0.

    For more details, check How to: Set ReportSource for Report Viewers.


    About securing the Reporting REST WebAPI service, you can use HTTPS and any authorization attributes on the virtual ReportsControllerBase methods.


    In addition, Telerik Reports can be exported in the supported formats, without being displayed in a viewer. For the purpose you can use a ReportProcessor instance - Exporting Report Programmatically. The operation happens on the server. The ReportProcessor requires a reference to Telerik.Reporting.dll.


    Please note that the current preview Nuget packages are not final, and there will be updates after the official ASP.NET Core release.

    Regards,
    Stef
    Telerik
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
  4. Mike
    Mike avatar
    2 posts
    Member since:
    May 2014

    Posted 01 Jun in reply to Stef Link to this post

    Stef - I am trying to have the report viewer to show a report designed in a VS report designer (report designed using Telerik.Reporting.Report class)

    I set the reportSource to the name of the class (tried fully-qualified and not), but getting "Error creating report instance" error.

    Your example shows that the controller uses Telerik.Reporting.Services.Mvc6.ReportFileResolver as the resolver. I expected to find a class like Telerik.Reporting.Services.Mvc6.ReportTypeResolver, but it does not exist in the Mvc6 namespace...

    How do you want us to show VS reports?

    Appreciate your help,

    Mike

  5. Stef
    Admin
    Stef avatar
    3048 posts

    Posted 06 Jun Link to this post

    Hi Mike,

    Please check the response in your support ticket #1039775 on the same question.

    For anyone concerned, the ReportTypeResolver is not exposed and you will need to use a custom resolver to display a report designed in Visual Studio.
    For example:
    public class ReportsController : ReportsControllerBase
       {
           static ReportServiceConfiguration configurationInstance;
           readonly string webRoot;
           static ReportsController()
           {
           }
           public ReportsController(IHostingEnvironment env)
           {
               this.webRoot = env.WebRootPath;
               var resolver = new ReportFileResolver(Path.Combine(this.webRoot, "Reports")).AddFallbackResolver(new MyResolver());
              
               this.ReportServiceConfiguration = new ReportServiceConfiguration
               {
                   HostAppId = "Html5DemoApp",
                   Storage = new FileStorage(),
                   ReportResolver = resolver,
                   // ReportSharingTimeout = 0,
                   // ClientSessionTimeout = 15,
               };
           }
       }
     
       public class MyResolver : Telerik.Reporting.Services.Engine.IReportResolver
       {
           public ReportSource Resolve(string report)
           {
               return new TypeReportSource { TypeName = report };
               ////if you need to add some changes in the report before displaying it
               //Telerik.Reporting.Report reportInstance = null;
               //if (report.Contains("Report2"))
               //    reportInstance = Activator.CreateInstance(Type.GetType(report)) as Telerik.Reporting.Report;
     
               //return new InstanceReportSource { ReportDocument = reportInstance };
           }
       }


    Regards,
    Stef
    Telerik
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
Back to Top