VersionOne API客户端无法识别资产类型?

时间:2015-06-10 12:46:11

标签: c# asp.net-mvc versionone

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

我从asset typeshow 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);

这些是我的错误/堆栈痕迹: Error Server Error Meta Stack Trace

这个错误可能很简单,但我无法理解。

1 个答案:

答案 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资产。