使用REST API和C#在Rally中创建缺陷

时间:2018-01-26 00:00:42

标签: rally

我正在尝试使用C#以编程方式在Rally中创建缺陷。以下是我的代码和错误

Error in creating defect!!!
Cannot parse object reference from "Unspecified"

代码:

       RallyRestApi restApi;
       restApi = new RallyRestApi(webServiceVersion: "v2.0");
       //after successful authentication...

       String workspaceRef = "/workspace/12345";
       String projectRef = "/project/78321";  


        DynamicJsonObject badDefect = new DynamicJsonObject();
        newDefect["Name"] = "Defect " + DateTime.Now;
        newDefect["Project"] = projectRef ;
        newDefect["Environment"] = "test branch";
        newDefect["c_DefectSourceNEW"] = "old";
        newDefect["Severity"] = "minor";         
        newDefect["Release"] = "Unspecificed";

        CreateResult createResult = restApi.Create("Defect", newDefect);

        if (createResult.Success == true)
        {
            Console.WriteLine("Defect created Successfully!!!");
        }
        else 
        {
            Console.WriteLine("Error in creating defect!!!");
        }

        foreach (string s in createResult.Errors)
        {
            Console.WriteLine(s);
        }

有人可以提出我可能做错了什么,一般来说,正确的方法是为缺陷分离“释放”值吗?

2 个答案:

答案 0 :(得分:0)

wsapi中的所有对象关系都由refs表示。所以你只需要将值设置为ref而不是名称,就像你已经在使用工作空间和项目一样。

答案 1 :(得分:0)

感谢Kyle的投入。由于版本ID是强制性的,我在下面解决了版本输入:

  Request reRequest = new Request("Release");
            reRequest.Workspace = workspaceRef;
            reRequest.Query = new Query("Project", Query.Operator.Equals, projectRef);
            QueryResult queryResult = restApi.Query(reRequest);
            string reprojectRef = null;
            foreach (DynamicJsonObject result in queryResult.Results)
            {

                reprojectRef = result["_ref"];
                Console.WriteLine(reprojectRef);

                Console.WriteLine("Name: " + result["Name"]);

                if (result["Name"] == "MyReleaseName")
                {
                    newDefect["Release"] = result["_ref"];

                }

            }