如何以编程方式将azure服务总线的类型设置为通知中心

时间:2014-11-04 02:43:40

标签: c#-4.0

使用下面的方法,我之前(直到上周)可以创建一个“混合”类型的服务总线,然后可以添加一个通知中心。然而,它突然停止工作。它创建一个具有“Messaging”类型的服务总线,当它尝试创建通知中心时,我收到以下错误:

Enity xxxxxx,创建通知中心失败,错误被禁止

   public ServiceBusNamespaceResponse CreateServiceBus(SubscriptionCloudCredentials credentials, string regoin)
    { 
        var serviceBushubClient = CloudContext.Clients.CreateServiceBusManagementClient(credentials);
        var checkserviceBusResponse = serviceBushubClient.Namespaces.CheckAvailability(_deploymentName);

        if (checkserviceBusResponse.IsAvailable)
        {
            try
            {

                var serviceBusClientResponse = serviceBushubClient.Namespaces.Create(_deploymentName, regoin);
                _serviceBusEndpoint = serviceBusClientResponse.Namespace.ServiceBusEndpoint.ToString();  

                return serviceBusClientResponse;
            }

            catch (CloudException ex)
            {
                Console.WriteLine(ex.ErrorMessage);
                return null;
            }
        }

        return null;
    }

    public bool CreateNotificationHub(SubscriptionCloudCredentials credentials)
    {
        SBNotificationHubManager notificationHub;
        EntityDescription servesBus = new EntityDescription();
        servesBus.Name =_deploymentID;



        var des = new MyNotificationHubDescription("push-hub-" + TenantID, servesBus);
        notificationHub =
            ResourceFactory.Get( _subscriptionID,
                                new X509Certificate2(Convert.FromBase64String(RowData._base64EncodedCert)),
                                SBRestResourceType.NHub, des) as SBNotificationHubManager;
        if (notificationHub != null)
        {
           // Console.WriteLine("Created Notification Hub: {0}{1}", Environment.NewLine, notificationHub.LookUp().ToString());

            if (notificationHub.Create())
            {
                Console.WriteLine("Created Notification Hub: {0}{1}", Environment.NewLine, notificationHub.LookUp().ToString());
                notificationHub.WaitUntillActive();
                return true;
            }
        }
        return false;
    }

我想知道最近天蓝色的东西是否发生了变化?任何人都可以建议如何在c#中创建服务总线(消息/通知中心)时定义它的类型。上述方法的默认值是消息传递。我需要混合,但通知集线器类型在我的情况下也可以正常工作。

谢谢

1 个答案:

答案 0 :(得分:0)

现在,您必须明确选择Messaging(用于主题/队列/事件中心)或NotificationHub(用于通知中心)。这是个主意。

关于实施。观察源代码我可以看到接受ServiceBusNamespaceCreateParameters参数的重载:

Task<ServiceBusNamespaceResponse> CreateNamespaceAsync(string namespaceName, ServiceBusNamespaceCreateParameters namespaceEntity, CancellationToken cancellationToken);

该类具有NamespaceType

的公共属性
public NamespaceType NamespaceType{...

所以你可能可以将它设置为NamespaceType.NotificationHub然后继续创建命名空间。

相关问题