C# Azure Data Lake服务对服务身份验证客户端机密、AdalServiceException和WebException

C# Azure Data Lake服务对服务身份验证客户端机密、AdalServiceException和WebException,c#,azure,azure-active-directory,azure-data-lake,azure-authentication,C#,Azure,Azure Active Directory,Azure Data Lake,Azure Authentication,Tyring使用下面的文档为我计划移植到Azure功能的控制台应用程序启动并运行它 下面的代码就是我被卡住的地方 代码剪贴 // Service principal / appplication authentication with client secret / key // Use the client ID of an existing AAD "Web App" application. SynchronizationContext.SetSynchronizationContext(

Tyring使用下面的文档为我计划移植到Azure功能的控制台应用程序启动并运行它

下面的代码就是我被卡住的地方

代码剪贴

// Service principal / appplication authentication with client secret / key
// Use the client ID of an existing AAD "Web App" application.
SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());

var domain = "<AAD-directory-domain>";
var webApp_clientId = "<AAD-application-clientid>";
var clientSecret = "<AAD-application-client-secret>";
var clientCredential = new ClientCredential(webApp_clientId, clientSecret);
var creds = await ApplicationTokenProvider.LoginSilentAsync(domain, clientCredential);
//使用客户端密钥/密钥的服务主体/应用程序身份验证
//使用现有AAD“Web App”应用程序的客户端ID。
SetSynchronizationContext(新的SynchronizationContext());
变量域=”

我还确保此目录中的所有子文件夹都具有相同的级别或权限:

为文件路径分配权限

当我运行我的实现时,我得到以下错误。有什么建议吗?
System.AggregateException:“发生了一个或多个错误。”

内部异常1

AdalServiceException:AADSTS90002:请求的租户标识符“https:”无效

跟踪ID:d1718b0a-0533-4708-a311-4e1622840100

相关ID:a1544df2-692e-43d2-8acf-25a847956fb6

时间戳:2017-03-2901:30:18Z

内部例外2

WebException:远程服务器返回错误:(400)请求错误

作为解决方案的一部分 需要确保授予根文件夹读、写、执行权限(这将向下延伸到要授予这些权限的文件夹)然后从您不希望这些权限也被分配的所有其他文件夹中删除这些权限,确保您选择了删除该子文件夹及其所有kiddos/children的这些权限的选项

AdalServiceException:AADSTS90002:请求的租户标识符“https:”无效

这是您的租户名称,如“microsoft.onmicrosoft.com”

WebException:远程服务器返回错误:(400)请求错误

详细错误消息是什么,请参阅教程:

我按照详细步骤使用带有客户端密码的服务到服务身份验证,并成功创建了一个目录。下面的代码供您参考:

  public static async Task  CreateDirectory()
    {

        SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
        var domain = "microsoft.onmicrosoft.com";
        var webApp_clientId = "client id";
        var clientSecret = "client secret";
        var clientCredential = new ClientCredential(webApp_clientId, clientSecret);
        var creds = ApplicationTokenProvider.LoginSilentAsync(domain, clientCredential).Result;

        SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());

        _adlsClient = new DataLakeStoreAccountManagementClient(creds) { SubscriptionId = "_subId" };
        _adlsFileSystemClient = new DataLakeStoreFileSystemManagementClient(creds);

        await _adlsFileSystemClient.FileSystem.MkdirsAsync("_adlsAccountName", "tempdir");

    }
    static void Main(string[] args)
    {
      CreateDirectory().Wait();
    }
编辑

如果要创建目录,需要为应用程序分配执行权限。租户ID和租户名称都可用,表示:

 var domain = "microsoft.onmicrosoft.com";
 //you could also use tenant id 
 var domain = "Your tenant ID";

谢谢!此剪贴是向前迈出的一步,因为我通过捕获.Result更正了我的域字符串并使用了您的creds语法,但现在我遇到了另一个错误。System.AggregateException:“发生了一个或多个错误。”内部异常| AdlErrorException:操作返回了无效的状态代码“禁止”是否分配了perm如图所示,您还需要为应用程序分配访问“dirAppHasPermissionsTo”文件夹的权限:单击文件夹,单击“访问”按钮,并为您的应用程序分配相关权限。您还可以选择“添加到”此文件夹和所有子文件夹“分配权限时,如果您希望应用程序在文件夹的子文件夹中拥有权限,并且不需要使用完整路径:wait_adlsFileSystemClient.FileSystem.MkdirsAsync(“Nayutest”,@“tempdir11\tempdir11”);
 var domain = "microsoft.onmicrosoft.com";
 //you could also use tenant id 
 var domain = "Your tenant ID";