Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DevOps描述字段图像下载/保存文件_C#_Image_Tfs_Azure Devops_Azure Devops Rest Api - Fatal编程技术网

C# DevOps描述字段图像下载/保存文件

C# DevOps描述字段图像下载/保存文件,c#,image,tfs,azure-devops,azure-devops-rest-api,C#,Image,Tfs,Azure Devops,Azure Devops Rest Api,由于我们已经转移到Dev-Ops,我的应用程序无法下载存储在工作项中的任何字段中的图像 我有一个已经通过正则表达式从描述文件中删除的图像URL 如果我将此链接粘贴到浏览器中,它将返回图像(因此url有效) 问题是,在下载图像的调用中,我们没有任何身份验证凭据,它试图将我返回到登录页面 我在我的应用程序中使用dev ops服务器进行身份验证,它会缓存这些内容 readonly VssCredentials creds = new VssClientCredentials(); 我已尝试使用网络客

由于我们已经转移到Dev-Ops,我的应用程序无法下载存储在工作项中的任何字段中的图像

我有一个已经通过正则表达式从描述文件中删除的图像URL

如果我将此链接粘贴到浏览器中,它将返回图像(因此url有效)

问题是,在下载图像的调用中,我们没有任何身份验证凭据,它试图将我返回到登录页面

我在我的应用程序中使用dev ops服务器进行身份验证,它会缓存这些内容

readonly VssCredentials creds = new VssClientCredentials();
我已尝试使用网络客户端拨打电话,但您无法将VSScredentuals强制转换为system.net凭据

这以前是有用的

using (WebClient webClient = new WebClient())
{
          byte[] data = webClient.DownloadData(src);

          using (MemoryStream mem = new MemoryStream(data))
          {
                using (var yourImage = Image.FromStream(mem))
                {
                 // If you want it as Png
                 yourImage.Save(@"c:\temp\path_to_your_file.png", ImageFormat.Png);

                  // If you want it as Jpeg
                  yourImage.Save(@"c:\temp\path_to_your_file.jpg", ImageFormat.Jpeg);
                }
          }
}
我也尝试过使用

using (var client = new TfvcHttpClient(new Uri(src), creds))
{
        var itemRequestData = Create(src);
}

private static TfvcItemRequestData Create(string folderPath)
{
  return new TfvcItemRequestData
  {
    IncludeContentMetadata = true,
    IncludeLinks = true,
    ItemDescriptors =
          new[]
          {
                    new TfvcItemDescriptor
                    {
                        Path = folderPath,
                        RecursionLevel = VersionControlRecursionType.Full
                    }
          }
  };
}
但是,接下来如何将itemRequestData写入文件

还是我走错了方向

谢谢

试试这个:

using (WebClient webClient = new WebClient())
{
    webClient.Headers.Add("Authorization", "Basic " + base64Token);
    byte[] data = webClient.DownloadData(src);

    // ....      
}
其中,base64Token是您的个人访问令牌,在开始时使用“:”转换为base64


例如,如果您的令牌是abcdefg,您需要将:abcdefg转换为base64,并将其用作授权令牌。

嗨,艾伦,我没有看到您将凭据传递到常规网络客户端,可能只是您粘贴的内容,但您应该在客户端创建时传递凭据,或者在调用下载之前将其作为属性传递。您也可以尝试使用当前用户凭据进行下载,如果他有权访问TFS,则常规webclient下载应该可以正常工作。这就是我遇到的问题,我的应用程序确实在VssCredentials对象中保存了TFS服务器的凭据。web客户端代码是旧方法。但是,当尝试解决此问题时,webclient对象将不接受VssCredentials对象作为参数。那么,如何将其强制转换为system.net凭据对象??我们都可以访问TFS服务器,如果身份验证过期,我们会被要求在应用程序启动时进行身份验证(在VssCredentials中)。目前,当我尝试使用webclient对象时,没有使用系统(IE)缓存凭据。我可以知道您使用的是哪个tfs版本吗?如果方便的话,你能给我们分享一个简单的样本(删除个人信息并用xxx替换PAT)来重现这个问题吗。我们希望在我们这边进行测试,以便更好地解决此问题。@AlanRampton请尝试使用Credentials属性查看此处: