C# 使用TFS Rest API可以从curl工作,但不能从客户端dotnet库工作

C# 使用TFS Rest API可以从curl工作,但不能从客户端dotnet库工作,c#,tfs,azure-devops-rest-api,azure-devops-server-2019,azure-devops-server,C#,Tfs,Azure Devops Rest Api,Azure Devops Server 2019,Azure Devops Server,我正在使用库中的以下代码: 然而,我成功地从命令行执行了REST命令 curl <url>/_apis/projects -u :<PAT> curl/\u API/projects-u: 我正在使用Azure Devops服务器2019,无法修改任何配置。我正在运行dotnet core Alpine docker image的代码 这是dotnet库的一个限制还是我用错了?如果您想使用GitHttpClient,正如@Shayki Abramczyk指出的,您应该

我正在使用库中的以下代码:

然而,我成功地从命令行执行了REST命令

curl <url>/_apis/projects -u :<PAT>
curl/\u API/projects-u:
我正在使用Azure Devops服务器2019,无法修改任何配置。我正在运行dotnet core Alpine docker image的代码


这是dotnet库的一个限制还是我用错了?

如果您想使用GitHttpClient,正如@Shayki Abramczyk指出的,您应该使用
vssConnection.GetClient()
来获得GitHttpClient连接

var credential = new VssBasicCredential("", "<PAT>");
var url = "<url>"";
using var vssConnection = new VssConnection(new Uri(url), credential);
GitHttpClient gitClient = vssConnection.GetClient<GitHttpClient>();
var凭证=新的VssBasicCredential(“,”);
var url=“”;
使用var-vssConnection=new-vssConnection(新Uri(url)、凭证);
GitHttpClient gitClient=vssConnection.GetClient();

您可以按照Microsoft文档中的示例进行操作

问题在于dotnet Docker映像的Alpine发行版,它还不支持
gss ntlmssp
。切换到标准映像(基于Ubuntu的-
mcr.Microsoft.com/dotnet/core/aspnet:3.1
)解决了这个问题。

为什么要使用ConnectAsync方法?你想使用哪个rest api?这就是我在示例中看到的。你说我应该跳过它吗?我正在尝试在
GitHttpClient
下使用api获取项目,获取存储库等等。我没有使用它,只是
vssConnection.GetClient();
@shaykibaramczyk此调用产生完全相同的错误。您是否可以尝试安装gss ntlmssp并设置AppContext.SetSwitch(“System.Net.Http.UseSocketsHttpHandler”,false),如本文所述,我在尝试安装
gss ntlmssp
curl <url>/_apis/projects -u :<PAT>
var credential = new VssBasicCredential("", "<PAT>");
var url = "<url>"";
using var vssConnection = new VssConnection(new Uri(url), credential);
GitHttpClient gitClient = vssConnection.GetClient<GitHttpClient>();