TFS 扩展 - 如何读取 TaskAttachment 内容
TFS Extension - How to read TaskAttachment content
我在阅读从一个扩展程序上传到另一个扩展程序的 "TaskAttachment" 的内容时遇到问题。
我正在使用此代码获取“TaskAttachment”,我正在使用正确的名称和 URL 获取它,(我有权访问无需身份验证,例如来自另一个干净的浏览器)
var taskClient = DT_Client.getClient();
taskClient.getPlanAttachments(vsoContext.project.id, "build", build.orchestrationPlan.planId, "MyExtType").then((taskAttachments) => {
$.each(taskAttachments, (index, taskAttachment) => {
if (taskAttachment._links && taskAttachment._links.self && taskAttachment._links.self.href) {
var link = taskAttachment._links.self.href;
var attachmentName = taskAttachment.name;
var fileContent = readText(link);
...
而这个 javascript 读取内容的函数
...
var readText = function readTextFile(file)
{
alert("file = " + file);
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file, false);
rawFile.onreadystatechange = function ()
{
alert("rawFile.readyState = " + rawFile.readyState);
alert("rawFile.status = " + rawFile.status);
alert("rawFile.responseText = " + rawFile.responseText);
if(rawFile.readyState === 4)
{
if(rawFile.status === 200 || rawFile.status == 0)
{
var allText = rawFile.responseText;
alert(allText);
return allText;
}
}
}
rawFile.send(null);
return "Failed to get data..";
}
问题是我收到 401 错误消息:
“IIS 7.5 详细错误 - 401.2 - 未经授权”
如何阅读此文件内容?有没有更好的方法将数据从 "Build Step Extension" 传输到 "UI Extension" 以在构建摘要页面(新选项卡)中显示数据?
根据 "IIS 7.5 Detailed Error - 401.2 - Unauthorized" 这很可能是由于文件系统中设置的目录权限。
确保在 IIS -> 身份验证上启用匿名访问。
右键单击它,然后单击“编辑”,然后选择 domain\username 和密码。
我刚刚使用“getAttachmentContent”方法读取了附件数据:
我不确定为什么 MS 没有在教程中引用这个函数,在文档 \ Q&A 中进行了长时间的挖掘之后我找到了它。
taskClient.getPlanAttachments(vsoContext.project.id, "build", build.orchestrationPlan.planId, "My_Attachment_Type").then((taskAttachments) => {
$.each(taskAttachments, (index, taskAttachment) => {
if (taskAttachment._links && taskAttachment._links.self && taskAttachment._links.self.href) {
var recId = taskAttachment.recordId;
var timelineId = taskAttachment.timelineId;
taskClient.getAttachmentContent(vsoContext.project.id, "build", build.orchestrationPlan.planId,timelineId,recId,"My_Attachment_Type",taskAttachment.name).then((attachementContent)=> {
function arrayBufferToString(buffer){
var arr = new Uint8Array(buffer);
var str = String.fromCharCode.apply(String, arr);
return str;
}
var data = arrayBufferToString(attachementContent);
我在阅读从一个扩展程序上传到另一个扩展程序的 "TaskAttachment" 的内容时遇到问题。
我正在使用此代码获取“TaskAttachment”,我正在使用正确的名称和 URL 获取它,(我有权访问无需身份验证,例如来自另一个干净的浏览器)
var taskClient = DT_Client.getClient();
taskClient.getPlanAttachments(vsoContext.project.id, "build", build.orchestrationPlan.planId, "MyExtType").then((taskAttachments) => {
$.each(taskAttachments, (index, taskAttachment) => {
if (taskAttachment._links && taskAttachment._links.self && taskAttachment._links.self.href) {
var link = taskAttachment._links.self.href;
var attachmentName = taskAttachment.name;
var fileContent = readText(link);
... 而这个 javascript 读取内容的函数 ...
var readText = function readTextFile(file)
{
alert("file = " + file);
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file, false);
rawFile.onreadystatechange = function ()
{
alert("rawFile.readyState = " + rawFile.readyState);
alert("rawFile.status = " + rawFile.status);
alert("rawFile.responseText = " + rawFile.responseText);
if(rawFile.readyState === 4)
{
if(rawFile.status === 200 || rawFile.status == 0)
{
var allText = rawFile.responseText;
alert(allText);
return allText;
}
}
}
rawFile.send(null);
return "Failed to get data..";
}
问题是我收到 401 错误消息: “IIS 7.5 详细错误 - 401.2 - 未经授权”
如何阅读此文件内容?有没有更好的方法将数据从 "Build Step Extension" 传输到 "UI Extension" 以在构建摘要页面(新选项卡)中显示数据?
根据 "IIS 7.5 Detailed Error - 401.2 - Unauthorized" 这很可能是由于文件系统中设置的目录权限。
确保在 IIS -> 身份验证上启用匿名访问。
右键单击它,然后单击“编辑”,然后选择 domain\username 和密码。
我刚刚使用“getAttachmentContent”方法读取了附件数据:
我不确定为什么 MS 没有在教程中引用这个函数,在文档 \ Q&A 中进行了长时间的挖掘之后我找到了它。
taskClient.getPlanAttachments(vsoContext.project.id, "build", build.orchestrationPlan.planId, "My_Attachment_Type").then((taskAttachments) => {
$.each(taskAttachments, (index, taskAttachment) => {
if (taskAttachment._links && taskAttachment._links.self && taskAttachment._links.self.href) {
var recId = taskAttachment.recordId;
var timelineId = taskAttachment.timelineId;
taskClient.getAttachmentContent(vsoContext.project.id, "build", build.orchestrationPlan.planId,timelineId,recId,"My_Attachment_Type",taskAttachment.name).then((attachementContent)=> {
function arrayBufferToString(buffer){
var arr = new Uint8Array(buffer);
var str = String.fromCharCode.apply(String, arr);
return str;
}
var data = arrayBufferToString(attachementContent);