【问题标题】:RestSharp error in Azure Pipeline: 'RestResponseBase.StatusCode' is not supported by the languageAzure Pipeline 中的 RestSharp 错误:该语言不支持“RestResponseBase.StatusCode”
【发布时间】:2022-06-13 19:52:53
【问题描述】:

升级到 v107 后,我在 Azure 管道上收到此错误:

##[error]XXXXXXXXXXX.Shared.Integration\APIClients\XXXXXXXXXXRESTClientBase.cs(114,43):错误 CS1545:该语言不支持属性、索引器或事件“RestResponseBase.StatusCode”;尝试直接调用访问器方法 'RestResponseBase.get_StatusCode()' 或 'RestResponseBase.set_StatusCode(??)'

代码在我的笔记本电脑上编译,但由于某种原因它在管道上失败了。

可能与升级指南中的这条消息有关吗? “最重要的变化是 RestSharp 停止使用旧的 HttpWebRequest 类,而使用众所周知的 'HttpClient'。这一举措解决了很多问题,例如由于不正确的 HttpClient 实例缓存而挂起的连接、更新的协议支持以及许多其他问题。”

我正在使用仍然具有 LTS 的 .NET core 3.1。

编译失败的例子如下:

    private bool RequestFailed(HttpStatusCode statusCode)
    {
        var result = statusCode == HttpStatusCode.InternalServerError ||
                     statusCode == HttpStatusCode.ServiceUnavailable ||
                     statusCode == HttpStatusCode.Unauthorized;
        if (result) Logger.Verbose("API Call resulted in status code: " + statusCode.ToString());

        return result;
    }

    private bool HandleResult(RestResponse response)
    {
        return RequestFailed(response.StatusCode);
    }

哪些错误就行了:

return RequestFailed(response.StatusCode);

类似问题:

错误 CS1545:语言不支持属性、索引器或事件“Parameter.Name”

        public static void SetCorrelationId(RestRequest request, Guid? correlationId)
        {
            var existingHeader = request.Parameters.Where(x => x.Name == CorrelationIdHeaderKey).FirstOrDefault();
            ...
        }

【问题讨论】:

    标签: .net-core azure-devops restsharp


    【解决方案1】:

    该问题是由于 .NET Core 3.1 SDK 无法使用具有 init 而不是 set 的属性引起的,尽管 RestSharp 是针对 .NET Standard 构建的,并且应该适用于 .NET Core 3.1。

    它可以在您的机器上运行,因为您有更新的 SDK(.NET 5 或 6)。较新的 SDK 可以为遗留目标构建,所以它工作得很好。在您的 CI 管道中,您很可能使用 .NET Core 3.1 SDK 来构建解决方案,但它失败了。

    【讨论】:

    • 我的场景与解释的完全一样 - 在本地我的 SDK 足够新,但 SDK 的管道非常低。去定义 RestResponseBase.Content 揭示了一个使用 RestSharp v107 的 getter 和 init,所以我降级到 v106,getter/init 变成了一个 getter/setter,嘿,我的管道构建现在可以正常工作了。谢谢。
    • 我们将在下一个版本中将 init 替换为 set 以缓解此问题。
    • 有人让它工作吗?我在使用 Jenkins 时遇到了同样的问题,并且安装了 .Net 5、.Net 6 和 .Net Core SDK 无济于事。
    • @AlexeyZimarev 这仍然没有得到修复。能否请大家发布一个小更新或解决这个问题的东西
    【解决方案2】:

    几天前似乎有一个解决方法:“将 RestBaseResponse 属性包从 init 更改为 setter”

    https://github.com/restsharp/RestSharp/releases/tag/108.0.0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      • 2016-09-22
      相关资源
      最近更新 更多