1

我遇到了 VersionOneAPIClient 的问题,因为它无法识别我给它作为资产类型的任何东西。我了解属性定义可能没有任何意义,但我一直在尝试几乎所有事情。我的最终目标是查询 TeamRooms 并从团队房间中的所有团队获取团队名称。

这是我从关于资产类型的文档以及如何查询这应该起作用的文档中的理解,但这就是我们所说的。

我正在使用: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);

这些是我的错误/堆栈跟踪: 错误 服务器错误 元堆栈跟踪

这个错误可能很简单,而且就在我面前,但我无法弄清楚。

4

1 回答 1

5

你有几件事在这里发生。我将解决您的陈述“我的最终目标是查询 TeamRooms 并从团队房间中的所有团队中获取团队名称。”

这是一段工作代码,它读取您的所有 TeamRoom 并打印 Team Room 的名称和 Team Name。一旦你在你的机器上得到这个工作,尝试进行分页。逐步添加过滤以保持低调试周期。

 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 信任您的决定,但是在允许 auth 之后,您必须在 VersionOne 中拥有一个活动的成员帐户才能访问 VersionOne 资产。

于 2015-06-11T19:41:24.097 回答