none
Empfänger von Abonnements (Email) per SOAP identifizieren RRS feed

  • Frage

  • Hallo Zusammen,

    ich habe mich im Code erfolgreich mit dem Reporting Service über die ReportingService2010 Klasse verbunden.

    Des Weiteren ist es mir gelungen alle Ordner und Reports über CatalogItem zu identifizieren. Auch Abonnements lassen sich in Subcribtions laden. 

    Nun habe ich versucht die Empfänger von Email Abos zu identifizieren und habe mir die Subsribtion Describtion geholt in der die Empfänger aufgezählt werden. Leider ist die Zeichenkette die wiedergegeben wir begrenzt und wird bei mehr als 2 Empfänger abgeschnitten.

    Ich bin absoluter Anfänger in diesem Bereich (zweites Ausbildungsjahr), und würde mich freuen wenn mir jemand hier einen Tipp geben könnte was ich mir genauer angucken muss um den TO: Wert des Emailversand auszulesen.

    Hätte auch nichts gegen nen kleinen Codeschnipsel.

    Danke

    Rene

     

    Montag, 9. November 2015 17:16

Antworten

  • Hallo Rene,

    das der zurück gelieferte Wert von der Länge her begrenzt ist oder abgeschnitten wird, kann ich nicht bestätigen; bei mir geht das problemlos.

    Hier mal mein Code, aufs nötigste begrenzt:

    using System;
    using System.Linq;
    using SsrsReportRenderer.ReportService2010;
    
    namespace SsrsReportRenderer
    {
        internal class Program
        {
            private static void Main(string[] args)
            {
                var rs = new ReportingService2010();
                rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
                var subscriptionId = "A8C7F018-B2FE-423A-99EA-D0BB41B53B13";
                ExtensionSettings extSettings = null;
                string description;
                ActiveState state;
                string status;
                string eventType;
                string matchData;
                ParameterValue[] parameters = null;
                var result = rs.GetSubscriptionProperties(subscriptionId,
                                        out extSettings,
                                        out description,
                                        out state,
                                        out status,
                                        out eventType,
                                        out matchData,
                                        out parameters);
                var to = (from e in extSettings.ParameterValues
                          where ((ParameterValue)e).Name == "TO"
                          select e).FirstOrDefault() as ParameterValue;
                if (to != null)
                {
                    Console.WriteLine("To = {0}", to.Value);
                }
    
                Console.ReadLine();
            }
        }
    }

    Ergebnis:


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Dienstag, 10. November 2015 10:23

Alle Antworten

  • Hallo Rexarius,

    ich habe ein bisschen nachgeforscht, aber leider nichts gefunden. Ich werde Morgen mit der Forschung fortfahren.

    Gruß

    Aleksander


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht,  kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Dienstag, 10. November 2015 09:43
  • Hallo Rene,

    das der zurück gelieferte Wert von der Länge her begrenzt ist oder abgeschnitten wird, kann ich nicht bestätigen; bei mir geht das problemlos.

    Hier mal mein Code, aufs nötigste begrenzt:

    using System;
    using System.Linq;
    using SsrsReportRenderer.ReportService2010;
    
    namespace SsrsReportRenderer
    {
        internal class Program
        {
            private static void Main(string[] args)
            {
                var rs = new ReportingService2010();
                rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
                var subscriptionId = "A8C7F018-B2FE-423A-99EA-D0BB41B53B13";
                ExtensionSettings extSettings = null;
                string description;
                ActiveState state;
                string status;
                string eventType;
                string matchData;
                ParameterValue[] parameters = null;
                var result = rs.GetSubscriptionProperties(subscriptionId,
                                        out extSettings,
                                        out description,
                                        out state,
                                        out status,
                                        out eventType,
                                        out matchData,
                                        out parameters);
                var to = (from e in extSettings.ParameterValues
                          where ((ParameterValue)e).Name == "TO"
                          select e).FirstOrDefault() as ParameterValue;
                if (to != null)
                {
                    Console.WriteLine("To = {0}", to.Value);
                }
    
                Console.ReadLine();
            }
        }
    }

    Ergebnis:


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Dienstag, 10. November 2015 10:23
  • Hallo Olaf,

    ja so müsste es auch bei mir funktionieren, Danke.

    Ich habe die Description Eigenschaft der Subscription Klasse anzeigen lassen.

    Das war der Fehler!

    Ich werde es später mal austesten.

    Danke nochmal!

    Rene

    Dienstag, 10. November 2015 12:27
  • Hallo Rene,

    wenn es nur ums Ermitteln der Empfänger geht: Das kann man auch per T-SQL abfrage; nicht wirklich supported, aber geht:

    ;WITH subs AS 
        (SELECT *
               ,CONVERT(xml, ExtensionSettings) AS extXml
          FROM dbo.Subscriptions
        )
    SELECT p.para.value(N'*[contains(Name[1], "TO")][1]/Value[1]', 'varchar(4000)') AS [To]
          ,p.para.value(N'*[contains(Name[1], "IncludeReport")][1]/Value[1]', 'varchar(4000)') AS IncludeReport      
          ,p.para.value(N'*[contains(Name[1], "RenderFormat")][1]/Value[1]', 'varchar(4000)') AS RenderFormat
          ,p.para.value(N'*[contains(Name[1], "Subject")][1]/Value[1]', 'varchar(4000)') AS [Subject]
          ,p.para.value(N'*[contains(Name[1], "IncludeLink")][1]/Value[1]', 'varchar(4000)') AS IncludeLink
          ,p.para.value(N'*[contains(Name[1], "Priority")][1]/Value[1]', 'varchar(4000)') AS [Priority]
          ,subs.*
    FROM subs
         CROSS APPLY
         subs.extXml.nodes('/ParameterValues') AS p(para)


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Mittwoch, 11. November 2015 07:56