2

これは、TeamCitySharp サーバーへの Json 接続を取得するための私のコードです。localhost は私の Json 接続です。現在、ローカルホストに移動したときに開始日を表示しようとしていますが、null として表示されます。これを修正する方法についてのアイデアはありますか?

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:81/Status/AllStatuses");
            var response = request.GetResponse();
            var reader = new StreamReader(response.GetResponseStream());
            var responseString = reader.ReadToEnd();

            var serializer = new JavaScriptSerializer();
            serializer.RegisterConverters((new[] { new DynamicJsonConverter() }));
            dynamic obj = serializer.Deserialize(responseString, typeof(object));

            foreach (var objects in obj)
            {       

                foreach (var project in client.Projects)
                {


                    foreach (var build in project.Builds)
                    {
                        bs.date = project.ProjectStartDate.ToString();        

これは、Jsonresult を呼び出す別のプロジェクトの別のコントローラーにあります。

public JsonResult AllStatuses() //from the json called in the _client view
    {
        var buildStatuses = new List<BuildStatus>();

        var projects = Client.AllProjects();

        //var projects = storeDB.Projects.Include("Builds").ToList();
        //var buildStatuses = new List<BuildStatus>();


        foreach (var project in projects)
        {
            try 
            {
                var buildConfigs = Client.BuildConfigsByProjectId(project.Id);

                foreach (var buildConfig in buildConfigs)
                {
                    var build = Client.LastBuildByBuildConfigId(buildConfig.Id);

                    var b = new BuildStatus();
                    b.id = buildConfig.Id.ToString();
                    if (b.date != null)
                        b.date = b.date.ToString();
                    if (b.status != null)
                        b.status = build.Status.ToString();
                    buildStatuses.Add(b);
                }
            } catch { }
        }
        //var query = buildStatuses.OrderBy(x => x.status); // Create a sorted list from Error - Unknown               

        return Json(buildStatuses, JsonRequestBehavior.AllowGet);
    }
4

1 に答える 1

0

この質問が、それを尋ねた人にとってまだ関連性があるかどうかはわかりません。同じ問題に遭遇する可能性のある他の人のために答えます。

REST API を介して TeamCity に簡単にアクセスできる FluentTc ライブラリがあります。開始日および/または終了日でビルドを取得する方法があります。

IList builds = new RemoteTc().Connect(h => h.ToHost("teamcity.codebetter.com").AsGuest()) .GetBuilds(b => b.BuildConfiguration(c => c.Id("FluentTc_FluentTcDevelop")) .Branch(r => r.Branched()), i => i.IncludeStatusText().IncludeStartDate().IncludeFinishDate());

ライブラリは nuget パッケージとして入手できます: https://www.nuget.org/packages/fluenttc

于 2016-09-20T21:47:04.663 に答える