我的问题:如何以编程方式创建订阅?
…
问题:我习惯使用较旧的WindowsAzure库.现在我使用的是不支持旧库的.NET Standard
解决方案:使用Microsoft.Azure.ServiceBus NuGet包
…
解决方案:还使用NuGet库Microsoft.Azure.Management.ServiceBus
…
问题:它不支持使用连接字符串或Azure门户提供给您的密钥
解决方案:https://github.com/Azure-Samples/service-bus-dotnet-management提供了常用的编程模式.
…
问题:WTF是它正在谈论的{tenantId}?
解决方案:很明显,它位于“Azure Active Directory”下 – > “属性”并有助于标记“目录ID”而不是tenantId,正如人们所期望的那样
…
问题:WTF是{clientId}和{clientSecret}?
解决方案:更容易.从这些信息中可以明显看出,您必须:
>转到“Azure Active Directory”
>点击“应用注册”
>点击“创建新的应用注册”
>将其命名为“Web app / API”,并在URL上标记您想要的任何内容,因为它实际上并不重要,即使它是必需的
>记录“应用程序ID”,每个人都知道它实际上是{clientId}引用的内容
>在新应用程序中单击“设置”
>点击“键”
>在“密码”部分下键入一些随机说明,然后点击“保存”
>在那里保存“价值”,因为它秘密地是{clientSecret}(多么聪明!它的秘密!)
>返回“服务总线”
>选择“访问控制(IAM)”
>选择像所有者/贡献者这样的角色
>输入您的应用程序名称并保存
…
好的,示例工作的第1步也是如此? AcquireTokenAsync返回一个访问令牌! YAYYYYYYYYYYYYY
result.AccessToken是步骤2中提到的“令牌”,似乎.
第2,3步……没问题……继续执行第4步.除了使用sbClient.Subscriptions.CreateOrUpdate代替
{resourceGroupName}似乎很容易 – 从门户网站上的“资源组”复制
…
问题:什么是{namespaceName}?
是服务总线名称吗?喜欢{name} .servicebus.windows.net?或者命名空间是{name.servicebus.windows.net}的全部内容?或者它包括像{sb://name.servicebus.windows.net}这样的方案?
…
问题:无论我在这里尝试什么,我都会在CreateOrUpdate调用中以“Operation返回无效状态代码’NotFound’”结束.
那就是我被困住的地方.我哪里出错了?
在旁注中,snark反映了我的挫败感 – 我觉得好像我需要学习一大堆Azure技术,我真的不想知道任何事情只是为了做一些“应该简单的事情” ”.就像我被一个兔子洞弄下来一样.
[编辑#1] – “SubscriptionId”原来是在门户的计费部分下找到的AZURE订阅ID,而不是指服务总线订阅.
[编辑#2] – “namespaceName”不包括.servicebus.windows.net – 只是名称本身
随着这些变化,经过无数个小时的研究,IT工作
解决方法
请注意,有一个pending PR可以使用.NET Core 2.0
展望未来,人们认识到开发人员更喜欢使用类似于Azure Active Directory选项的连接字符串来访问Service Bass.提出Management Operations issue以跟踪请求. Current plan是为.NET Standard客户端提供轻量级管理库.
目前,选项要么利用旧客户端创建实体,要么使用Microsoft.Azure.Management.ServiceBus(或Fluent),直到管理包可用.