2012-04-03 9 views
4

Ich habe versucht, einen neuen Fehler zu schreiben über Rast .net api durch den folgenden Code-Rallye:Rally Übriges .NET API wirft KeyNotFoundException, wenn ein neuer Defekt ohne erforderliche Feldwert Entsendung

var api = new RallyRestApi("<myusername>", "<mypassword>", "https://community.rallydev.com"); 

var defect = new DynamicJsonObject(); 
defect["Name"] = "Sample Defect"; 
defect["Description"] = "Test posting defect without required field value"; 
defect["Project"] = "https://trial.rallydev.com/slm/webservice/1.29/project/5808130051.js"; 
defect["SubmittedBy"] = "https://trial.rallydev.com/slm/webservice/1.29/user/5797741589.js"; 
defect["ScheduleState"] = "In-Progress"; 
defect["State"] = "Open"; 

CreateResult creationResult = api.Create("defect", defect); 

Aber die api wirft eine seltsame Ausnahme:

System.Collections.Generic.KeyNotFoundException was unhandled 
    Message=The given key was not present in the dictionary. 
    Source=mscorlib 
    StackTrace: 
     at System.Collections.Generic.Dictionary`2.get_Item(TKey key) 
     at Rally.RestApi.DynamicJsonObject.GetMember(String name) 
     at Rally.RestApi.DynamicJsonObject.TryGetMember(GetMemberBinder binder, Object& result) 
     at CallSite.Target(Closure , CallSite , Object) 
     at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0) 
     at Rally.RestApi.RallyRestApi.Create(String type, DynamicJsonObject obj) 
     at RallyIntegrationSample.Program.Main(String[] args) in D:\Projects\qTrace\References\Samples\RallyIntegrationSample\Program.cs:line 24 

Das Problem ist, wenn ich die Trace-Protokolldatei der Rally ausgecheckt, es zeigte genau das, was in der Buchungsanfrage falsch:

Rally.RestApi Post Response: 
{ 
    "CreateResult": 
    { 
     "_rallyAPIMajor":"1", 
     "_rallyAPIMinor":"29", 
     "Errors":["Validation error: Defect.Severity should not be null"], 
     "Warnings":[] 
    } 
} 

Anstatt das richtige CreateResult-Objekt mit entsprechenden Fehlerinformationen in seiner Eigenschaft anzugeben, löst der Rally-Rest .Net Api eine unerwartete Ausnahme aus.

Ist das ein Fehler in Rally Rest .net API oder sollte ich irgendwelche zusätzlichen Schritte, um das CreatResult nahtlos im Falle von Fehlern von Rallye-Service zurückgegeben erhalten?

Vielen Dank für Ihre Hilfe.

Antwort

2

Das klingt wie ein Defekt. Es wird in der nächsten Woche eine Wartungsversion der Bibliothek geben, um einen weiteren Fehler zu beheben. Ich werde versuchen, dies zu repro- duzieren und werde meine Ergebnisse veröffentlichen.

+1

Ich habe festgestellt, dass dies ein Problem ist. Es wird in der kommenden Version 1.06 der Rally Rest Api für .NET behoben werden. –

+0

Vielen Dank @Kyle, bitte tun Sie mir einen Gefallen zu aktualisieren, wenn es Release 1.0.6 zur Verfügung steht. –

+1

Veröffentlicht: http://developer.rallydev.com/help/rest-api-net –