Mac上的azure-sdk-for-net引发异常

时间:2018-11-21 20:01:31

标签: c# azure .net-core

我正在尝试将Azure文本分析API SDK用于dotnet(basically this nuget package)。我正在使用Mac。

运行代码时出现以下异常(我使用Mac):

  

值'Darwin17.7.0DarwinKernelVersion17.7.0WedOct10230614PDT2018rootxnu-4570.71.131 / RELEASE_X86_64'的格式无效。

这是引发异常的代码:

var serviceClientCredentials = new AzureApiKeyServiceClientCredentials("<key>");
// Throw an exception here
var client = new TextAnalyticsClient(_serviceClientCredentials);

ServiceClientCredentials类:

public class AzureApiKeyServiceClientCredentials : ServiceClientCredentials
{
    private readonly string _subscriptionKey;

    public AzureApiKeyServiceClientCredentials(string subscriptionKey)
    {
        _subscriptionKey = subscriptionKey;
    }

    public override Task ProcessHttpRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        request.Headers.Add("Ocp-Apim-Subscription-Key", _subscriptionKey);

        return base.ProcessHttpRequestAsync(request, cancellationToken);
    }
}

问题根源

尝试理解源代码后,我发现TextAnalyticsClient尝试设置标头键/值,并且该值不是有效的http标头值(即Darwin..../RELEASE_X86_64)。更具体地说,我在源代码中看到,它在OsVersion的标头上设置了HttpClient,它不是url友好值,并且HttpClient引发了异常:

this.UpdateDefaultUserAgentList("OSVersion", this.OsVersion);

我创建了一个issue on GitHub。因此,解决该问题所需要做的就是修复always call CleanUserAgentInfoEntry(_osVersion)

我从他们的消息来源中看到他们正在从OsVersion获得new PlatformInfo();,我想知道是否可以更改RuntimeInformation.OSDescription

更新: 我创建了pull request来解决此问题。

1 个答案:

答案 0 :(得分:0)

我刚刚解决了问题,thanks to @shahabhijeet。我安装了最新版本的Microsoft.Rest.ClientRuntime,它解决了问题。

GitHub问题线程:https://github.com/Azure/azure-sdk-for-net/issues/5046