使用 .Net SDK 从 Azure Data Lake 存储中删除文件?

Delete a file from Azure Data Lake store using .Net SDK?

我想使用 .Net SDK 删除 Azure Data Lake Store 中的特定文件

使用了下面的代码,它 returns 错误 "Operation returned an invalid status code 'BadRequest'"

var clientCredential = new ClientCredential(CLIENTID, CLIENTSECRET);

var creds = ApplicationTokenProvider.LoginSilentAsync(DOMAINNAME, clientCredential).Result;

_adlsFileSystemClient = new DataLakeStoreFileSystemManagementClient(creds);

var fileDeleteResult = _adlsFileSystemClient.FileSystem.Delete(_adlsAccountName, path);

我曾经遇到过这个错误,我最终通过使用异步方法而不是同步方法解决了这个错误。

您可能还想检查传递给 "Delete" 函数的文件路径;它必须是 完整路径,包括文件名 + 扩展名。类似“/rootFolder/subFolder1/subFolder2/DeleteMe.txt”的东西

尝试这样的事情:

    private ServiceClientCredentials Authenticate(string _adlsDomain, string _adlsWebClientId, string _adlsClientSecret)
{               
    SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());

    /*_adlsDomain       ==> DirectoryID or TenantID
      _adlsWebClientId  ==> Application ID
      _adlsClientSecret ==> Active Directory APplication key1
    */

    ClientCredential clientCredential = new ClientCredential(_adlsWebClientId, _adlsClientSecret);

    return ApplicationTokenProvider.LoginSilentAsync(_adlsDomain, clientCredential).Result;     

}

private async Task DeleteFile(string path)
{
    string _adlsDomain = "xxxx";
    string _adlsWebClientId = "xxxx";
    string _adlsClientSecret = "xxxx";      
    string _subscription_id = "xxxx";
    string _adlsAccountName = "xxxxxxx";
    ServiceClientCredentials _creds = Authenticate(_adlsDomain, _adlsWebClientId, _adlsClientSecret)

    // Create client objects and set the subscription ID
    DataLakeStoreAccountManagementClient _adlsClient = new DataLakeStoreAccountManagementClient(_creds) { SubscriptionId = _subscription_id };
    DataLakeStoreFileSystemManagementClient _adlsFileSystemClient = new DataLakeStoreFileSystemManagementClient(_creds);

    await _adlsFileSystemClient.FileSystem.DeleteAsync(_adlsAccountName, path);
}