2016-08-08 4 views
0

Lassen Sie mich zunächst meine Einrichtung beschreiben.Drucken Telerik-Berichte mit ReportProcessor-Klasse

Ich habe einen REST Telerik Reporting Service. Der Dienst arbeitet mit der TRDX-Datei (eine Anforderung, Berichte in diesem Vorlagenformat zu haben). Ich habe auch eine Konsolenanwendung, die regelmäßig von einem Windows-Dienst gestartet wird. Diese Konsolenanwendung verwendet die ReportProcessor-Klasse, um Berichte direkt an einen Drucker zu senden.

Jetzt das Problem.

ReportProcessor löst beim Versuch, mit UriReportSource auf die Berichte zuzugreifen, eine Ausnahme aus, wenn diese Berichtsdateien zusammen mit dem REST-Berichtsdienst in IIS gehostet werden. Browsing und anonyme Authentifizierung sind in IIS für den Ordner Berichte aktiviert. Der Fehler, der ausgelöst wird, ist:

Der Remoteserver gab einen Fehler zurück: (404) nicht gefunden.

Berichte werden jedoch gedruckt, wenn sich TRDX-Dateien im selben Ordner wie die Konsolenanwendung befinden.

Antwort

0

Meine eigene Frage durch Versuch und Irrtum gelöst.

Meine Berichte befanden sich im Unterverzeichnis des REST-Dienstes. Also versuchte ich die Uri auf die Berichte URL etwas wie folgt zu setzen:

UriReportSource reportSource = new UriReportSource { 
    Uri = "http://localhost/myTelerikRESTService/Reports/samplereport.trdx" 
}; 

Und ich war natürlich immer 404 Fehler, da die Anforderung an den diesen Weg würde durch den Dienst behandelt werden.

Der Versuch, einen physischen Pfad anzugeben (c:\inetpub\wwwroot\myTelerikService\Reports\samplereport.trdx) endete ebenfalls mit einem Fehler: so etwas wie the path format is not supported.

Endlich habe ich dieses Uri versucht: /inetpub/wwwroot/myTelerikService/Reports/samplereport.trdx, das auf den physischen Standort abbildet.

Und es hat funktioniert!

EDIT:

Ich sollte wirklich dieses https://www.w3.org/Addressing/URL/uri-spec.html gelesen haben, bevor zu diesem Thema zu arbeiten. Anscheinend hatte ich keine feste Vorstellung davon, was ein URI ist! Ich fühle mich jetzt wirklich dumm ...