升级到 v107 后,我在 Azure Pipeline 上收到此错误:
##[error]XXXXXXXXXXX.Shared.Integration\APIClients\XXXXXXXXXXRESTClientBase.cs(114,43):错误 CS1545:属性、索引器或事件“RestResponseBase.StatusCode”不受语言支持;尝试直接调用访问器方法“RestResponseBase.get_StatusCode()”或“RestResponseBase.set_StatusCode(??)”
代码在我的笔记本电脑上编译,但由于某种原因在管道上失败。
会不会和升级指南中的这条消息有关? “最重要的变化是 RestSharp 停止使用遗留的 HttpWebRequest 类,而是使用众所周知的“HttpClient”。此举解决了很多问题,例如由于不正确的 HttpClient 实例缓存导致的挂起连接、更新的协议(protocol)支持,以及许多其他问题。”
我使用的是 .NET core 3.1,它仍然有 LTS。
编译失败的例子如下:
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 3.1 SDK 无法使用具有 init
而不是 set
的属性引起的,尽管 RestSharp 是针对 .NET Standard 构建的,并且应该与 .NET Core 3.1 一起工作。
它可以在您的机器上运行,因为您有更新的 SDK(.NET 5 或 6)。较新的 SDK 可以为遗留目标构建,因此它工作得很好。在您的 CI 管道中,您很可能使用 .NET Core 3.1 SDK 来构建解决方案,但它失败了。
关于.net-core - Azure Pipeline : 'RestResponseBase.StatusCode' is not supported by the language 中的 RestSharp 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71255156/