导出 (0) 打印
全部展开

步骤 2:创建管理凭据

更新时间: 2014年1月

这是 Service Bus 消息传递功能教程中的第二个步骤。在此步骤中,您将定义可用于创建安全(共享机密)凭据的管理操作,通过这些凭据即可获得应用程序的授权。

  1. 为清楚起见,本教程将所有队列操作都放在一个单独的方法中。在 Program 类中 Main() 方法的下面创建 Queue() 方法。例如:

    public static void Main(string[] args)
    {
    …}
    static void Queue()
    {
    }
    
    
  2. 下一步是使用 TokenProvider 对象创建共享机密凭据。该创建方法需要使用在 CollectUserInput() 方法中获得的颁发者名称和密钥。将下列代码添加到 Queue() 方法:

    static void Queue()
    {
        // Create management credentials
        TokenProvider credentials = TokenProvider.CreateSharedSecretTokenProvider(IssuerName, IssuerKey);
    }
    
    

  1. 将包含服务命名空间名称和上一步获得的管理凭据的 URI 作为参数,创建一个新的服务命名空间管理对象。将以下代码直接添加到在上一步添加的代码之下:

    NamespaceManager namespaceClient = new NamespaceManager(ServiceBusEnvironment.CreateServiceUri("sb", ServiceNamespace, string.Empty), credentials);
    

示例

此时,您的代码应与下面的代码类似:

namespace Microsoft.ServiceBus.Samples
{
    public class Program
    {

        private static DataTable issues;
        private static List<BrokeredMessage> MessageList;
        private static string ServiceNamespace;
        private static string IssuerName;
        private static string IssuerKey;

        public static void Main(string[] args)
        {
            // Collect user input
            CollectUserInput();

            // Populate test data
            issues = ParseCSVFile();
            MessageList = GenerateMessages(issues);

        }

        static void Queue()
        {

            // Create management credentials
                TokenProvider credentials = TokenProvider.CreateSharedSecretTokenProvider(IssuerName, IssuerKey);
            // Create namespace client
            NamespaceManager namespaceClient = new NamespaceManager(ServiceBusEnvironment.CreateServiceUri("sb", ServiceNamespace, string.Empty), credentials);
        }

        static void CollectUserInput()
        {
            // User service namespace
            Console.Write("Please provide the service namespace to use: ");
            ServiceNamespace = Console.ReadLine();

            // Issuer name
            Console.Write("Please provide the issuer name to use: ");
            IssuerName = Console.ReadLine();

            // Issuer key
            Console.Write("Please provide the issuer key to use: ");
            IssuerKey = Console.ReadLine();
        }


       static List<BrokeredMessage> GenerateMessages(DataTable issues)
        {
            // Instantiate the brokered list object
            List<BrokeredMessage> result = new List<BrokeredMessage>();

            // Iterate through the table and create a brokered message for each row
            foreach (DataRow item in issues.Rows)
            {
                BrokeredMessage message = new BrokeredMessage();
                foreach (DataColumn property in issues.Columns)
                {
                    message.Properties.Add(property.ColumnName, item[property]);
                }
                result.Add(message);
            }
            return result;
        }

        static DataTable ParseCSVFile()
        {
            DataTable tableIssues = new DataTable("Issues");
            string path = @"..\..\data.csv";
            using (StreamReader readFile = new StreamReader(path))
            {
                string line;
                string[] row;

                // create the columns
                line = readFile.ReadLine();
                foreach (string columnTitle in line.Split(','))
                {
                    tableIssues.Columns.Add(columnTitle);
                }

                while ((line = readFile.ReadLine()) != null)
                {
                    row = line.Split(',');
                    tableIssues.Rows.Add(row);
                }
            }

        return tableIssues;
    }
}
}

在下一步中,您将创建可向其发送消息的队列。

编译代码

  • 在 Visual Studio 的“构建”菜单中,选择“构建解决方案”,或按 F6 确认目前所做工作的准确性。

显示:
© 2014 Microsoft