共用方式為


程式設計存取

您可以使用上述資料表中提供的 REST 識別碼,以程式設計方式存取通知中樞遙測資料,類似于Microsoft Azure 服務匯流排計量 (,以存取個別計量) 。

步驟 1:建立憑證

首先,建立憑證以存取您的 Azure 訂用帳戶資源。 在 Windows 中,執行下列動作:

  1. 開啟Visual Studio系統管理員命令提示字元,然後輸入下列命令:

    makecert -sky exchange -r -n "CN=<CertificateName>" -pe -a sha1 -len 2048 -ss My "<CertificateName>.cer"
    
  2. 執行 Certmgr.msc,按一下左側的 [個人 ],然後以滑鼠右鍵按一下您建立的憑證,然後按一下 [ 所有工作],然後按一下 [ 匯出]。

    Portal

  3. 請遵循精靈,然後選擇不匯出私密金鑰的選項。 選擇匯出 CER 憑證的選項,然後提供結尾為 的 .cer 檔案名。

    Portal

  4. 重複匯出程式,這次選擇在 PFX 檔案中匯出私密金鑰。 然後選取結尾為 .PFX 的名稱。

步驟 2:將憑證Upload至 Azure

現在上傳您的 。CER 檔案可讓您的憑證在 Azure 資源上執行作業。

  1. 在 Azure 管理入口網站中,按一下左側設定,然後按一下 [管理憑證]。

  2. 按一下畫面底部Upload,然後選取您的 。CER 檔案。

  3. 記下您想要管理的訂用帳戶識別碼。

    注意

    訂用帳戶識別碼必須是包含通知中樞之訂用帳戶的 。

    Portal

步驟 3:透過 REST 介面存取計量

若要讀取遙測,您必須使用上一節所報告的計量名稱,發出根據Microsoft Azure 服務匯流排計量中所指定規則所建構的 URL 的 REST 呼叫 () 。

下列程式碼範例會擷取自 2013-08-06T21:30:00Z (記得將 subscriptionIds、命名空間名稱、通知中樞名稱和 pfx 憑證路徑匯總的成功推播數目,以您的值) 取代。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Runtime.Serialization;
using System.Security.Cryptography.X509Certificates;
using System.ServiceModel.Syndication;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace telemetry1
{
    class Program
    {
        [DataContract(Name = "properties", Namespace = "https://schemas.microsoft.com/ado/2007/08/dataservices")]
        public class MetricValue
        {
            [DataMember(Name = "Timestamp")]
            public DateTime Timestamp { get; set; }

            [DataMember(Name = "Min")]
            public long Min { get; set; }

            [DataMember(Name = "Max")]
            public long Max { get; set; }

            [DataMember(Name = "Total")]
            public long Total { get; set; }

            [DataMember(Name = "Average")]
            public float Average { get; set; }
        }

        static void Main(string[] args)
        {
            string uri = @"https://management.core.windows.net/{subscriptionId}/services/ServiceBus/namespaces/{namespaceName}/NotificationHubs/{hubName}/metrics/outgoing.allpns.success/rollups/PT5M/Values?$filter=Timestamp%20gt%20datetime'2014-08-06T21:30:00Z'";
            HttpWebRequest sendNotificationRequest = (HttpWebRequest)WebRequest.Create(uri);
            sendNotificationRequest.Method = "GET";
            sendNotificationRequest.ContentType = "application/xml";
            sendNotificationRequest.Headers.Add("x-ms-version", "2015-01");
            X509Certificate2 certificate = new X509Certificate2(@"{pathToPfxCert}", "{certPassword}");
            sendNotificationRequest.ClientCertificates.Add(certificate);


            try
            {
                HttpWebResponse response = (HttpWebResponse)sendNotificationRequest.GetResponse();

                using (XmlReader reader = XmlReader.Create(response.GetResponseStream(), new XmlReaderSettings { CloseInput = true }))
                {
                    SyndicationFeed feed = SyndicationFeed.Load<SyndicationFeed>(reader);

                    foreach (SyndicationItem item in feed.Items)
                    {
                        XmlSyndicationContent syndicationContent = item.Content as XmlSyndicationContent;
                        MetricValue value = syndicationContent.ReadContent<MetricValue>();
                        Console.WriteLine(value.Total);
                    }
                }
            }
            catch (WebException exception)
            {
                string error = new StreamReader(exception.Response.GetResponseStream()).ReadToEnd();
                Console.WriteLine(error);
            }
        }


    }
}