c# - DevOps 描述字段图像下载/保存文件
问题描述
由于我们已经转移到 Dev Ops,我的应用程序无法下载存储在工作项中的任何字段中的图像。
我有一个已经通过正则表达式从描述文件中删除的图像 URL。
如果我将此链接粘贴到浏览器中,则它会返回图像(因此 url 有效)
问题是在下载图像的调用中,我们没有任何身份验证凭据,并且它试图将我返回到登录页面。
我在我的应用程序中使用 dev ops 服务器进行身份验证,它会缓存这些。
readonly VssCredentials creds = new VssClientCredentials();
我尝试使用网络客户端进行呼叫,但您无法将 VSCredentuals 转换为 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 并将其用作授权令牌。
推荐阅读
- angular - 角度变量为 NaN 或未定义
- amazon-web-services - ALB 在一个公共端口(tomcat)上映射多个上下文路径
- c - 在 UNIX 上打印目录代码会出错
- angular - 有人可以帮助如何解决这个问题吗?
- rust - How can I implement a blocking queue mechanism with futures::sync::mpsc::channel?
- php - 获取其他表中的总新闻计数
- excel - Excel工作表索引通过VBA宏中的唯一编号识别?
- java - 在静态数据集的多用户环境中并行运行多个 Spark 查询
- ios - 如何获取任何 iOS 应用程序的 IPA 文件
- c# - 如何初始化 List 继承自 List C#?