1

Ich brauche ein anderes Paar Augen, um sich das anzusehen. Es macht mich verrückt.Fehlersuche System.AggregateException

Ich erhalte zeitweilig eine 'System.AggregateException', wenn ich eine Konsolenanwendung starte, die eine Verbindung zu einer Web-API herstellt.

Ich mache dies in einer lokalen Testumgebung durch Visual Studio (IIS Express).

Wie gesagt, ich habe zwei verschiedene Anwendungen lokal auf IIS Express (2 verschiedene Ports) ausgeführt. Eine ist eine Konsolen-App und die andere ist eine Web-API. Die Konsolen-App verbindet sich mit der Web-API.

Es ist ungefähr 50/50, wenn es funktioniert oder nicht. In 50% der Fälle funktioniert es gut und spuckt die erwarteten Ergebnisse aus. Aber die anderen 50% der Zeit, schlägt es mit den Fehlern fehl. Wenn dies fehlschlägt, geschieht dies immer sofort, etwa 2 oder 3 Sekunden nach dem Start der Konsolen-App.

Nach einigen googeln und um mit verschiedenen Einstellungen Hantieren, weiß ich es auch nicht von diesen ist: kein Timeout Problem keine Firewall-Problem

ich Haltepunkte an verschiedenen Punkten habe versucht Einstellung, aber es ist wirklich nie enthüllt alles Wichtige.

Die Ausnahme, die ich erhalte, wenn es nicht ist:

Eine Ausnahme vom Typ ‚System.AggregateException‘ in mscorlib.dll aufgetreten war aber nicht

Hier ist die innere Ausnahme in Benutzercode behandelt: Nein Verbindung hergestellt werden kann, da der Zielcomputer aktiv http://localhost:45321 verweigert

der Stack-Trace zeigt an:

bei System.Net.HttpWebRequest.EndGetRequestStream (I AsyncResult asyncResult, TransportContext & Kontext) bei System.Net.Http.HttpClientHandler.GetRequestStreamCallback (IAsyncResult ar) bei System.Threading.Tasks.Task.ThrowIfExceptional (Boolean includeTaskCanceledExceptions) bei System.Threading.Tasks.Task 1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task 1.get_Result() bei BeatGenerator.BeatGeneratorMain. <> c.b__2_0 (Aufgabe 1 postTask) in C:\Users\xxx\Documents\VS2012\DrumBeats\BeatGenerator\BeatGeneratorMain.cs:line 72 at System.Threading.Tasks.ContinuationResultTaskFromResultTask 2.InnerInvoke() bei System.Threading.Tasks.Task.Execute()

Hier ist die Fehlerzeile:

var response = await http.PostAsJsonAsync("http://localhost:45321/api/drumcorp/beats/generate", drumbeat) 
       .ContinueWith((postTask) => postTask.Result.EnsureSuccessStatusCode()); 

Dies ist die Konsole-Anwendung, die verbindet API-Controller:

public class DrumBeats 
{ 
    public int StartBeat { get; set; } 
    public int EndBeat { get; set; } 
    public int ChordId { get; set; } 
} 

public class BeatGeneratorMain 
{ 

    static void Main(string[] args) 
    { 
     Generate().Wait(); 
} 

private static async Task Generate() 
{ 

     var drumbeat = new DrumBeats(); 
     drumbeat.ChordId = 122; 
     drumbeat.StartBeat = 2; 
     drumbeat.EndBeat = 4; 

     var creds = new NetworkCredential("testUser", "xxxx", "xxx"); //username, pw, domain 
     var handler = new HttpClientHandler { Credentials = creds }; 

    using (var http = new HttpClient(handler)) 
    { 
      http.Timeout = TimeSpan.FromMinutes(10); 
      var response = await http.PostAsJsonAsync("http://localhost:45321/api/drumcorp/beats/generate", drumbeat) 
       .ContinueWith((postTask) => postTask.Result.EnsureSuccessStatusCode()); 
      var result = await response.Content.ReadAsStringAsync(); 
      Console.WriteLine(result); 
    } 

} 

} 

Dies ist der entsprechende Abschnitt der Bahn api Controller App:

public class DrumBeats //same as in console app 
{ 
    public int StartBeat { get; set; } 
    public int EndBeat { get; set; } 
    public int ChordId { get; set; } 
} 


    [HttpPost("api/drumcorp/beats/generate")] 
    public string PostMethodBeats([FromBody] DrumBeats drumbeat) 
    { 
     string beatsChart = DrumBeatMaster.ReturnBeatsChart(DrumBeats.ChordId, DrumBeats.StartBeat, DrumBeats.EndBeat); 
     var mesg = "<b>Beats Created</b><br /><br /> "; 
     return mesg + beatsChart; 
    } 

DrumBeatMaster.ReturnBeatsChart ist nur eine einfache Hilfsmethode, die die Beats verarbeitet und eine Saite ausspuckt.

Antwort

1

Um zu verstehen, was die Ausnahme ist, dass Sie das Aggregat Ausnahme abfangen müssen und sie wie ich den gleichen Fehler

try { // Your code } catch (AggregateException agg) { throw agg.Flatten(); }

+0

abgeflacht werfen: Eine Ausnahme des Typs ‚System.AggregateException‘ aufgetreten in mscorlib. dll, wurde aber nicht im Benutzercode – SkyeBoniwell

+0

behandelt. Ist es möglich, dass Sie die Lösung auf github einchecken? Ich kann kompilieren, um das Problem zu überprüfen. Scheint mehr wie Konflikt der Beschaffung von Ressourcen – lazy

Verwandte Themen