我遇到了VersionOneAPIClient的一个问题,因为它无法识别我给它的任何资产类型。我理解属性定义可能没有任何意义,但我一直在尝试所有的东西。我的最终目标是查询TeamRooms并从团队空间的所有团队中获取团队名称。
我从asset types和how to query的文档中了解到这应该有用,但这就是我们所说的。
我正在使用: C#ASP.NET,VersionOneAPIClient 15.0.0.0
我试过的字符串:
项目
public bool APIgetTeams()
{
IAssetType teamroomType = services.Meta.GetAssetType("Task");
Query query = new Query(teamroomType);
IAttributeDefinition teamAttribute = teamroomType.GetAttributeDefinition("Children:Room.Team.Name");
query.Selection.Add(teamAttribute);
IAttributeDefinition scheduleAttribute = teamroomType.GetAttributeDefinition("Children:Scope.Room.Schedule.Name");
query.Selection.Add(scheduleAttribute);
query.Find = new QueryFind(scheduleName, new AttributeSelection(scheduleAttribute));
query.Paging.PageSize = 1;
query.Paging.PageSize = 0;
teamRoomAsset = (Asset)services.Retrieve(query).Assets.ToArray().GetValue(0);
return true;
}
我对服务和连接器的定义:
public static V1Connector connector = V1Connector
.WithInstanceUrl("http://versionone.cscinfo.com/VersionOneProd/")
.WithUserAgentHeader("New Dashboard?", "1.0")
.WithWindowsIntegrated()
.Build();
public IServices services = new Services(connector);
这些是我的错误/堆栈痕迹:
这个错误可能很简单,但我无法理解。
答案 0 :(得分:5)
你有几件事情在这里发生。我将在您的发言中说明" 我的最终目标是查询TeamRooms并获取团队会议室中所有团队的团队名称。"
这是一段工作代码,可以读取所有TeamRooms并打印Team Room的名称和团队名称。在计算机上运行此功能后,请尝试进行分页。逐步添加过滤以使调试周期保持较低。
static void Main(string[] args)
{
V1Connector connector = V1Connector
.WithInstanceUrl("https://www.MyV1INstance")
.WithUserAgentHeader("HappyApp", "0.1")
.WithUsernameAndPassword("login", "pwd")
.Build();
IServices services = new Services(connector);
IAssetType trType = services.Meta.GetAssetType("TeamRoom");
Query query = new Query(trType);
IAttributeDefinition teamAttribute = trType.GetAttributeDefinition("Team.Name");
IAttributeDefinition nameAttribute = trType.GetAttributeDefinition("Name");
query.Selection.Add(teamAttribute);
query.Selection.Add(nameAttribute);
QueryResult result = services.Retrieve(query);
Asset teamRooms = result.Assets[0];
foreach (Asset story in result.Assets)
{
Console.WriteLine(story.Oid.Token);
Console.WriteLine(story.GetAttribute(teamAttribute).Value);
Console.WriteLine(story.GetAttribute(nameAttribute).Value);
Console.WriteLine();
}
附录
我刚刚意识到您使用的是WithWindowsIntegrated()而不是WithUsernameAndPassword()。
只需在我的示例中更改它,然后确认您已作为已在VersionOne中设置的成员登录到计算机。 windows int auth信任IIS'决定信任您,但在允许身份验证后,您必须在VersionOne中拥有一个有效的成员帐户才能访问VersionOne资产。