问题描述
我正在尝试通过此 guide 来运行 .net 中的流分析客户端。
在 Visual Studio 中,我在 GetCredentials 方法中收到一条错误消息,提示“UserTokenProvider 不包含 LoginWithPromptAsync 的定义”。
根据设置项目的要求,我正在使用以下内容:
Microsoft.Azure.Management.StreamAnalytics - 2.0.0 版
Microsoft.Rest.ClientRuntime.Azure.Authentication -Version 2.3.1
我可以使用哪种其他方法,有人可以帮忙吗?
解决方法
如果要使用适用于 .NET 的 Azure 流分析 API 运行分析作业,可以使用服务主体进行身份验证。
例如
- 创建服务主体并将 Azure RABC 角色分配给 sp
az ad sp create-for-rbac -n ""
- 包装
Install-Package Microsoft.Azure.Management.StreamAnalytics -Version 2.0.0
Install-Package Microsoft.Rest.ClientRuntime.Azure.Authentication -Version 2.3.1
- 代码
SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
string clientId = "23***b79c";
string clientSecret = "";
string ActiveDirectoryTenantId = "e****b";
var credentials = await ApplicationTokenProvider.LoginSilentAsync(ActiveDirectoryTenantId,clientId,clientSecret);
StreamAnalyticsManagementClient streamAnalyticsManagementClient = new StreamAnalyticsManagementClient(credentials)
{
SubscriptionId = "e*****8"
};
var jobs = await streamAnalyticsManagementClient.StreamingJobs.ListAsync();
foreach (var job in jobs) {
Console.WriteLine(job.Id);
}