WebReportViewer/xxxxWRV?instanceId=xxxx liefert keine Werte für ProvideListLabelContext/ProvideFileRepositoryContext

Dem Viewer möchte ich über Parameter ein Repository mitgeben. Ich gebe einen Identifier über die Url mit, die ich über ein ViewModel an den WebReportViewer weitergebe. Im ersten Moment (init) sieht auch alles so aus, als würde es funktionieren, doch im zweiten Moment (hash oder resources) mit Referenz auf die InstanzId scheinen alle Daten verloren zu sein.

Ich hätte erwartet, dass auch bei den nachfolgenden Funktionen die Werte für ProvideListLabelContext/ProvideFileRepositoryContext vorliegen. Mein Denkfehler oder ein Bug?
Ich hänge mal ein kleines Logfile an:

Der erste Teil läuft wie erwartet mit gefüllten Kontexten

info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[63]
      User profile is available. Using 'C:\Users\mita\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: D:\tmp\aspnet\xxxxDesigner  
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/1.1 GET http://localhost:5000/Design/Preview/my-first-report - - -
warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
      Failed to determine the https port for redirect.
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'xxxxLlDesigner.Controllers.DesignController.Preview (xxxxDesigner)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[102]
      Route matched with {action = "Preview", controller = "Design"}. Executing controller action with signature Microsoft.AspNetCore.Mvc.IActionResult Preview(System.String) on controller xxxxLlDesigner.Controllers.DesignController (xxxxDesigner).
2024-02-16 13:43:58.7237|INFO|xxxxLlDesigner.Controllers.DesignController|View Report for SchemaId[my-first-report].
2024-02-16 13:43:58.7425|INFO|AngularMVCWebReportingSample.DefaultSettings|GetBaseRepository() with id=my-first-report
2024-02-16 13:43:58.7425|INFO|xxxx.module.Print.PrintManagerRepository|PrintManagerRepository(uriToPrintManager=System.Func`1[System.String], id=my-first-report, reportLanguage=en
2024-02-16 13:43:58.7425|INFO|xxxx.module.Print.PrintManagerRepository|GetAllItems()
info: System.Net.Http.HttpClient.printmanager.LogicalHandler[100]
      Start processing HTTP request GET http://localhost:9096/api/llrepo/my-first-report/items
info: System.Net.Http.HttpClient.printmanager.ClientHandler[100]
      Sending HTTP request GET http://localhost:9096/api/llrepo/my-first-report/items
info: System.Net.Http.HttpClient.printmanager.ClientHandler[101]
      Received HTTP response headers after 411.2032ms - 200
info: System.Net.Http.HttpClient.printmanager.LogicalHandler[101]
      End processing HTTP request after 418.8581ms - 200
2024-02-16 13:43:59.6178|INFO|xxxxLlDesigner.Controllers.DesignController|Found Resource[repository://{39249C7F-5FFB-4400-AE8B-3A62F55D1763}] for SchemaId[my-first-report].
info: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[1]
      Executing ViewResult, running view Preview.
info: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[4]
      Executed ViewResult - view Preview executed in 29.0926ms.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[105]
      Executed action xxxxLlDesigner.Controllers.DesignController.Preview (xxxxDesigner) in 951.136ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'xxxxLlDesigner.Controllers.DesignController.Preview (xxxxDesigner)'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished HTTP/1.1 GET http://localhost:5000/Design/Preview/my-first-report - 200 - text/html;+charset=utf-8 1026.1982ms
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/1.1 GET http://localhost:5000/WebReportViewer/FrontendVersionWRV?frontendVersion=29.1.0 - - -
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/1.1 GET http://localhost:5000/favicon.ico - - -
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'AngularMVCWebReportingSample.Controllers.LLWebReportViewerController.FrontendVersionWRV (xxxxDesigner)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[102]
      Route matched with {action = "FrontendVersionWRV", controller = "LLWebReportViewer"}. Executing controller action with signature Boolean FrontendVersionWRV(System.String) on controller AngularMVCWebReportingSample.Controllers.LLWebReportViewerController (xxxxDesigner).
2024-02-16 13:43:59.8542|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|LLWebReportViewerController(factory=System.Func`1[System.String])
info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[2]
      Sending file. Request path: '/favicon.ico'. Physical path: 'D:\tmp\aspnet\xxxxDesigner\wwwroot\favicon.ico'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished HTTP/1.1 GET http://localhost:5000/favicon.ico - 200 5430 image/x-icon 8.0455ms
info: Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor[1]
      Executing ObjectResult, writing value of type 'System.Boolean'.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[105]
      Executed action AngularMVCWebReportingSample.Controllers.LLWebReportViewerController.FrontendVersionWRV (xxxxDesigner) in 49.8947ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'AngularMVCWebReportingSample.Controllers.LLWebReportViewerController.FrontendVersionWRV (xxxxDesigner)'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished HTTP/1.1 GET http://localhost:5000/WebReportViewer/FrontendVersionWRV?frontendVersion=29.1.0 - 200 4 application/json;+charset=utf-8 53.9263ms
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/1.1 GET http://localhost:5000/WebReportViewer/InitWRV?projectName=repository:%2F%2F%7B39249C7F-5FFB-4400-AE8B-3A62F55D1763%7D&customData=my-first-report - - -
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'AngularMVCWebReportingSample.Controllers.LLWebReportViewerController.InitWRV (xxxxDesigner)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[102]
      Route matched with {action = "InitWRV", controller = "LLWebReportViewer"}. Executing controller action with signature combit.Reporting.Web.WebReportViewer.JsonModels.Instance InitWRV(System.String, System.String) on controller AngularMVCWebReportingSample.Controllers.LLWebReportViewerController (xxxxDesigner).
2024-02-16 13:43:59.9147|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|LLWebReportViewerController(factory=System.Func`1[System.String])
2024-02-16 13:43:59.9147|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideListLabel(ProvideListLabelContext CustomData=[]).
2024-02-16 13:43:59.9147|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideListLabel(ProvideListLabelContext ClientCustomData=[my-first-report]).
2024-02-16 13:43:59.9147|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideListLabel(ProvideListLabelContext InstanceId[k5vv45Uqi0qqPfCiwBPeRA]).
2024-02-16 13:43:59.9147|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideListLabel(ProvideListLabelContext ExportPath=[]).
2024-02-16 13:43:59.9147|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideListLabel(ProvideListLabelContext ProjectName=[repository://{39249C7F-5FFB-4400-AE8B-3A62F55D1763}]). 
2024-02-16 13:44:00.7729|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|List & Label InstanceId[combit.Reporting.ListLabel] created!
2024-02-16 13:44:00.7729|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideRepository(provideFileRepositoryContext CustomData=[]).
2024-02-16 13:44:00.7729|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideRepository(provideFileRepositoryContext ClientCustomData=[my-first-report]).
2024-02-16 13:44:00.7738|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideRepository(provideFileRepositoryContext InstanceId[k5vv45Uqi0qqPfCiwBPeRA]).
2024-02-16 13:44:00.7738|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideRepository(provideFileRepositoryContext ExportPath=[]).
2024-02-16 13:44:00.7738|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideRepository(provideFileRepositoryContext ProjectName=[repository://{39249C7F-5FFB-4400-AE8B-3A62F55D1763}]).
2024-02-16 13:44:00.7738|INFO|AngularMVCWebReportingSample.DefaultSettings|GetBaseRepository() with id=my-first-report
2024-02-16 13:44:00.7738|INFO|xxxx.module.Print.PrintManagerRepository|PrintManagerRepository(uriToPrintManager=System.Func`1[System.String], id=my-first-report, reportLanguage=en
2024-02-16 13:44:00.7738|INFO|xxxx.module.Print.PrintManagerRepository|GetAllItems()
info: System.Net.Http.HttpClient.printmanager.LogicalHandler[100]
      Start processing HTTP request GET http://localhost:9096/api/llrepo/my-first-report/items
info: System.Net.Http.HttpClient.printmanager.ClientHandler[100]
      Sending HTTP request GET http://localhost:9096/api/llrepo/my-first-report/items
info: System.Net.Http.HttpClient.printmanager.ClientHandler[101]
      Received HTTP response headers after 262.1028ms - 200
info: System.Net.Http.HttpClient.printmanager.LogicalHandler[101]
      End processing HTTP request after 262.2189ms - 200
info: Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor[1]
      Executing ObjectResult, writing value of type 'combit.Reporting.Web.WebReportViewer.JsonModels.Instance'.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[105]
      Executed action AngularMVCWebReportingSample.Controllers.LLWebReportViewerController.InitWRV (xxxxDesigner) in 1184.0933ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'AngularMVCWebReportingSample.Controllers.LLWebReportViewerController.InitWRV (xxxxDesigner)'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished HTTP/1.1 GET http://localhost:5000/WebReportViewer/InitWRV?projectName=repository:%2F%2F%7B39249C7F-5FFB-4400-AE8B-3A62F55D1763%7D&customData=my-first-report - 200 716 application/json;+charset=utf-8 1190.1611ms

Im 2. Teil sind die Kontexte leer, obwohl es sich um die korrekte InstanzId handelt

info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/1.1 GET http://localhost:5000/WebReportViewer/ResourcesWRV?instanceId=k5vv45Uqi0qqPfCiwBPeRA - - -
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'AngularMVCWebReportingSample.Controllers.LLWebReportViewerController.ResourcesWRV (xxxxDesigner)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[102]
      Route matched with {action = "ResourcesWRV", controller = "LLWebReportViewer"}. Executing controller action with signature combit.Reporting.Web.WebReportDesigner.Server.Services.Interfaces.IResourceInfo ResourcesWRV() on controller AngularMVCWebReportingSample.Controllers.LLWebReportViewerController (xxxxDesigner).
2024-02-16 13:44:01.1050|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|LLWebReportViewerController(factory=System.Func`1[System.String])
2024-02-16 13:44:01.1050|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideListLabel(ProvideListLabelContext CustomData=[]).
2024-02-16 13:44:01.1050|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideListLabel(ProvideListLabelContext ClientCustomData=[]).
2024-02-16 13:44:01.1050|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideListLabel(ProvideListLabelContext InstanceId[]).
2024-02-16 13:44:01.1050|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideListLabel(ProvideListLabelContext ExportPath=[]).
2024-02-16 13:44:01.1050|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideListLabel(ProvideListLabelContext ProjectName=[]).
2024-02-16 13:44:01.1515|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|List & Label InstanceId[combit.Reporting.ListLabel] created!
2024-02-16 13:44:01.1515|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideRepository(provideFileRepositoryContext CustomData=[]).
2024-02-16 13:44:01.1515|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideRepository(provideFileRepositoryContext ClientCustomData=[]).
2024-02-16 13:44:01.1515|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideRepository(provideFileRepositoryContext InstanceId[]).
2024-02-16 13:44:01.1515|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideRepository(provideFileRepositoryContext ExportPath=[]).
2024-02-16 13:44:01.1515|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|OnProvideRepository(provideFileRepositoryContext ProjectName=[]).
2024-02-16 13:44:01.1515|INFO|AngularMVCWebReportingSample.DefaultSettings|GetBaseRepository() with id=
2024-02-16 13:44:01.1515|INFO|xxxx.module.Print.PrintManagerRepository|PrintManagerRepository(uriToPrintManager=System.Func`1[System.String], id=, reportLanguage=en
2024-02-16 13:44:01.1515|INFO|xxxx.module.Print.PrintManagerRepository|GetAllItems()
info: System.Net.Http.HttpClient.printmanager.LogicalHandler[100]
      Start processing HTTP request GET http://localhost:9096/items
info: System.Net.Http.HttpClient.printmanager.ClientHandler[100]
      Sending HTTP request GET http://localhost:9096/items
info: System.Net.Http.HttpClient.printmanager.ClientHandler[101]
      Received HTTP response headers after 260.0096ms - 404
info: System.Net.Http.HttpClient.printmanager.LogicalHandler[101]
      End processing HTTP request after 260.1526ms - 404
info: Microsoft.AspNetCore.Mvc.Infrastructure.ContentResultExecutor[1]
      Executing ContentResult with HTTP Response ContentType of application/json
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[105]
      Executed action AngularMVCWebReportingSample.Controllers.LLWebReportViewerController.ResourcesWRV (xxxxDesigner) in 356.9613ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'AngularMVCWebReportingSample.Controllers.LLWebReportViewerController.ResourcesWRV (xxxxDesigner)'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished HTTP/1.1 GET http://localhost:5000/WebReportViewer/ResourcesWRV?instanceId=k5vv45Uqi0qqPfCiwBPeRA - 500 1988 application/json 358.4635ms
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/1.1 GET http://localhost:5000/WebReportViewer/TouchWRV?instanceId=k5vv45Uqi0qqPfCiwBPeRA - - -
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'AngularMVCWebReportingSample.Controllers.LLWebReportViewerController.TouchWRV (xxxxDesigner)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[102]
      Route matched with {action = "TouchWRV", controller = "LLWebReportViewer"}. Executing controller action with signature Boolean TouchWRV(System.String) on controller AngularMVCWebReportingSample.Controllers.LLWebReportViewerController (xxxxDesigner).
2024-02-16 13:44:01.4679|INFO|AngularMVCWebReportingSample.Controllers.LLWebReportViewerController|LLWebReportViewerController(factory=System.Func`1[System.String])
info: Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor[1]
      Executing ObjectResult, writing value of type 'System.Boolean'.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[105]
      Executed action AngularMVCWebReportingSample.Controllers.LLWebReportViewerController.TouchWRV (xxxxDesigner) in 1.6606ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'AngularMVCWebReportingSample.Controllers.LLWebReportViewerController.TouchWRV (xxxxDesigner)'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished HTTP/1.1 GET http://localhost:5000/WebReportViewer/TouchWRV?instanceId=k5vv45Uqi0qqPfCiwBPeRA - 200 4 application/json;+charset=utf-8 3.1317ms
info: Microsoft.Hosting.Lifetime[0]
      Application is shutting down...

Könnt Ihr mir da weiterhelfen?
Herzliche Grüße
Michael

Hallo Michael.

Eine Ursache ist in den Logs nicht erkennbar.

Nicht alle Aufrufe enthalten auch einen Kontext - dieser ist nur dann gefüllt, wenn er auch benötigt wird. Wo genau führt das auf deiner Seite zu einem Problem? Dann können wir gerne prüfen, was zu tun ist.

Hallo Onursal,
Danke für die schnelle Rückmeldung… wie immer :wink:

In den Beispielen, die ich gesehen hatte, gibt es ein großes IRepository auf dem alle Reports referenzieren. Dieses IRepository wird als Singleton gehalten und damit funktioniert der Editor / Viewer wunderbar.
Ich wollte jetzt eine Möglichkeit schaffen, dass ich pro Report ein IRepository habe in dem ich dann die dazugehörigen Bilder / SubReports usw. ablegen kann. Bei den Callback OnProvideRepository(xxx) setze ich das entsprechende Repository abhängig von der ClientCustomData. Es gibt aber leider den Fall, dass ich in diesem Callback keine ClientCustomData mehr bekomme und somit nicht mehr das richtige Repository referenzieren kann.

Anders formuliert: darf ich in der Anwendung nur ein Repository haben? (Ich muss mir gleich nochmal die Logs für den Edit UseCase anschauen. Da funktioniert das eigentlich prima).
Herzliche Grüße
Michael

Welche Version wird hier verwendet? Tatsächlich haben wir im letzten Service Pack Änderungen in diesem Bereich vorgenommen.

Kannst du das Verhalten mit der Version 29.001 testen? Wenn nicht, melde dich bitte kurz nochmal.

Vielen Dank.

Bei mir ist das “LL29ServicePack_29.001_20240123” installiert mit:

    <PackageReference Include="combit.ListLabel29" Version="29.1.0" />
    <PackageReference Include="combit.ListLabel29.Web" Version="29.1.0" />

Es kann Fälle geben, wie z.B. Hash, in denen die Aufrufe keinen Kontext enthalten, dieser sollte da aber auch nicht benötigt werden.

Um das Verhalten hier genauer untersuchen zu können, könntest du uns bitte ein kleines Quellcode-Beispiel zur Verfügung stellen? Am liebsten gleich über das Supportportal?

1 Like

Mit dem Patch läuft alles super. Lieben Dank für die schnelle Unterstützung.
Herzliche Grüße
Michael