Заголовок New-AzureRmDataLakeStoreItem 'User-Agent' должен быть изменен - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь использовать powershell для создания новой папки в хранилище озера данных Azure Gen 1, но и New-AzureRmDataLakeStoreItem, и New-AZDataLakeStoreItem возвращают ошибки.

У меня есть разрешения RWX на весь ADLS, и у меня есть версия PS

Major Minor Build Revision


5 1 17134 590

когда я бегу

Test-AzDataLakeStoreAccount -Name "weudevpocdtl" 

Я получаю Истинный ответ.

однако, когда я бегу:

New-AZDataLakeStoreItem  -Account "weudevpocdtl" -Path "/PowerShellTest" -Folder

Я получаю ошибку:

New-AZDataLakeStoreItem : Error in getting metadata for path /PowerShellTest.
Operation: GETFILESTATUS failed with   Unknown Error: The 'User-Agent' header must be modified using the appropriate property or method.
Parameter name: name Source: System StackTrace:    at System.Net.WebHeaderCollection.ThrowOnRestrictedHeader(String headerName)
   at System.Net.WebHeaderCollection.Set(String name, String value)
   at Microsoft.Azure.DataLake.Store.WebTransport.AssignCommonHttpHeaders(HttpWebRequest webReq, AdlsClient client, RequestOptions req, String token, String opMethod, IDictionary`2 
customHeaders, Int32 postRequestLength)
   at Microsoft.Azure.DataLake.Store.WebTransport.<MakeSingleCallAsync>d__22.MoveNext().
.
Last encountered exception thrown after 5 tries. [The 'User-Agent' header must be modified using the appropriate property or method.
Parameter name: name,The 'User-Agent' header must be modified using the appropriate property or method.
Parameter name: name,The 'User-Agent' header must be modified using the appropriate property or method.
Parameter name: name,The 'User-Agent' header must be modified using the appropriate property or method.
Parameter name: name,The 'User-Agent' header must be modified using the appropriate property or method.
Parameter name: name]
[ServerRequestId:]
At line:1 char:1
+ New-AZDataLakeStoreItem  -Account "weudevpocdtl" -Path "/PowerS ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [New-AzDataLakeStoreItem], AdlsException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.DataLakeStore.NewAzureDataLakeStoreItem

и когда я бегу

New-AzureRmDataLakeStoreItem  -Account "weudevpocdtl" -Path "/PowerShellTest" -Folder

Я получаю ошибку:

New-AzureRmDataLakeStoreItem : Method 'get_SerializationSettings' in type 'Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient' from assembly 
'Microsoft.Azure.Commands.ResourceManager.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' does not have an implementation.
At line:1 char:1
+ New-AzureRmDataLakeStoreItem  -Account "weunappocdtl" -Path "/P ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [New-AzureRmDataLakeStoreItem], TypeLoadException
    + FullyQualifiedErrorId : System.TypeLoadException,Microsoft.Azure.Commands.DataLakeStore.NewAzureDataLakeStoreItem

В другом арендаторе я имел обыкновение выполнять эти команды, и все это работало.

Что я делаю не так?

спасибо за любую помощь

1 Ответ

1 голос
/ 04 апреля 2019

Согласно Data Lake Team, см. Ссылку - это проблема с классом Httpwebrequest, используемым нашим SDK.Настройка useragent для httpwebrequest различается в зависимости от netframework и netcore:

NET framework: webReq.UserAgent = client.GetUserAgent();

net standard webReq.Headers["User-Agent"] = client.GetUserAgent()

Если вы попытаетесь использовать что-либо позже в net framework, вы получите сообщение об ошибке выше.

Когда вы используете этот модуль azкоторый использует netstandard dll нашего SDK.Когда вы используете это из windows powershell, он пытается использовать стандартную библиотеку dll на netframework, которая выдает эту ошибку.

Решение:

Я проверял это в net core powershell.Работает нормально.Мы переходим от httpwebrequest к httpclient, что, вероятно, решит проблему.

Таким образом, в основном, если вы используете windows powershell, используйте azurerm или же используйте Az от powershell netcore.

Сообщается о той же ошибке,вот ссылка на известную проблему GitHub.

https://github.com/Azure/azure-powershell/issues/8141

Я бы посоветовал вам использовать ядро ​​Powershell, https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6

Тогда оно должно работать

Get-AzureRmDataLakeStoreItem -Account "AccountName" -Path "/"
New-AzureRmDataLakeStoreItem -Account "AccountName" -Path "/Staging" -Folder
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...