C#、TFS、HasAdministerPermission 在我的 PC 上使用非我 TFS 凭据为假
C#, TFS, HasAdministerPermission is false on my PC with not-me TFS credentials
我正在编写一个 C# 应用程序,它将文件从 TFS 下载(使用 Microsoft.TeamFoundation)到工作区,操作文件,将它们签入并删除工作区。用户永远不需要知道文件暂时位于他们的 PC 上。
用户无权访问 TFC 的特定区域,但应用内置的网络凭据可以。
所以我得到了工作区,就像这样
this.workspace = this.GetWorkspace(workspaceName, credentials);
this.workspace.Map(this.ProjectPath, workspaceFolder);
this.workspace.Get();
GetWorkspace 在哪里
private Workspace GetWorkspace(string workSpaceName, ICredentials credentials)
{
var tpc = new TfsTeamProjectCollection(new Uri(this.Url), credentials);
var versionControl = tpc.GetService<VersionControlServer>();
var ws = versionControl.TryGetWorkspace(this.WorkspaceFolder)
?? versionControl.CreateWorkspace(workSpaceName, versionControl.AuthorizedUser);
return ws;
}
当我得到时,一切都会达到 workspace.Get
TF204017:操作无法完成,因为用户(ReadyAPI Test Runner)对工作区 MyWorkspace;用户名没有一项或多项必需的权限(管理)。果然,当我单步执行并检查工作区变量的权限时,HasAdministerPermission 为假。
我的假设是凭据(测试运行者)没有权限访问我的本地文件夹 (EffectivePermissions = "Read")。
我试过制作工作区public;并尝试更改工作区所有者名称,但这些似乎不起作用。我什至尝试将父文件夹(创建和删除的工作区)与 "Test Runner" 凭据共享。
如何使我解析的凭据具有完整的读写和删除权限?
您可以在没有本地工作区的情况下从 TFS 下载文件。
你需要两件事:
tfs 服务器名称和文件服务器名称
string tfsServerName ="yourServerName";
string fileServerName ="yourFileServerName";
现在连接到服务器:
TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(tfsServerName));
tpc.EnsureAuthenticated();
VersionControlServer sourceControl = (VersionControlServer)tpc.GetService(typeof(VersionControlServer));
现在是最后一行:
sourceControl.DownloadFile(fileServerName, "your local path with file name and extension" );
以上是基础知识。
我正在编写一个 C# 应用程序,它将文件从 TFS 下载(使用 Microsoft.TeamFoundation)到工作区,操作文件,将它们签入并删除工作区。用户永远不需要知道文件暂时位于他们的 PC 上。
用户无权访问 TFC 的特定区域,但应用内置的网络凭据可以。
所以我得到了工作区,就像这样
this.workspace = this.GetWorkspace(workspaceName, credentials);
this.workspace.Map(this.ProjectPath, workspaceFolder);
this.workspace.Get();
GetWorkspace 在哪里
private Workspace GetWorkspace(string workSpaceName, ICredentials credentials)
{
var tpc = new TfsTeamProjectCollection(new Uri(this.Url), credentials);
var versionControl = tpc.GetService<VersionControlServer>();
var ws = versionControl.TryGetWorkspace(this.WorkspaceFolder)
?? versionControl.CreateWorkspace(workSpaceName, versionControl.AuthorizedUser);
return ws;
}
当我得到时,一切都会达到 workspace.Get TF204017:操作无法完成,因为用户(ReadyAPI Test Runner)对工作区 MyWorkspace;用户名没有一项或多项必需的权限(管理)。果然,当我单步执行并检查工作区变量的权限时,HasAdministerPermission 为假。
我的假设是凭据(测试运行者)没有权限访问我的本地文件夹 (EffectivePermissions = "Read")。
我试过制作工作区public;并尝试更改工作区所有者名称,但这些似乎不起作用。我什至尝试将父文件夹(创建和删除的工作区)与 "Test Runner" 凭据共享。
如何使我解析的凭据具有完整的读写和删除权限?
您可以在没有本地工作区的情况下从 TFS 下载文件。
你需要两件事: tfs 服务器名称和文件服务器名称
string tfsServerName ="yourServerName";
string fileServerName ="yourFileServerName";
现在连接到服务器:
TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(tfsServerName));
tpc.EnsureAuthenticated();
VersionControlServer sourceControl = (VersionControlServer)tpc.GetService(typeof(VersionControlServer));
现在是最后一行:
sourceControl.DownloadFile(fileServerName, "your local path with file name and extension" );
以上是基础知识。