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 にクエリを実行し、チーム ルーム内のすべてのチームからチーム名を取得することです。」

これは、すべてのチーム ルームを読み取り、チーム ルームの名前とチーム名を出力するコードの一部です。マシンでこれが機能するようになったら、ページングを試みます。フィルタリングを段階的に追加して、デバッグ サイクルを低く抑えます。

 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();
        }

補遺

WithUsernameAndPassword() の代わりに WithWindowsIntegrated() を使用していることに気付きました。

私のサンプルでそれを変更するだけですが、VersionOne で既にセットアップされているメンバーとしてマシンにログインしていることを確認してください。Windows int 認証は IIS の決定を信頼していますが、認証を許可した直後に、VersionOne アセットにアクセスするには、VersionOne にアクティブなメンバー アカウントが必要です。

于 2015-06-11T19:41:24.097 に答える