我需要另一雙眼睛來看看這個。這讓我瘋狂。故障排除System.AggregateException
我在運行連接到web api的控制檯應用程序時,會間歇性地收到'System.AggregateException'。
我正在通過Visual Studio(IIS Express)在本地測試環境中執行此操作。如上所述,我有兩個不同的應用程序在IIS Express(2個不同的端口)上本地運行。一個是控制檯應用程序,另一個是web api。控制檯應用程序連接到Web API。
如果它工作與否,大約是50/50。 50%的時間工作正常,並吐出預期的結果。但另外50%的時間,它會因下面的錯誤而失敗。當它失敗時,它始終是立即的,就像啓動控制檯應用程序後2到3秒鐘一樣。
一些谷歌搜索後,並使用不同的設置左右擺弄,我知道這不是任一: 不超時問題 不是防火牆的問題
我試過設置在不同的點斷點,但它從來沒有真正揭示任何重大事件
的例外,我得到,當它失敗是:
型「System.AggregateException」的異常出現在mscorlib.dll,但在用戶代碼中沒有處理
下面是內部異常: 無連接可以作出,因爲目標機器積極地拒絕它http://localhost:45321
堆棧跟蹤表明:
在System.Net.HttpWebRequest.EndGetRequestStream(我AsyncResult asyncResult,TransportContext &上下文) 在System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult的AR) 在System.Threading.Tasks.Task.ThrowIfExceptional(布爾includeTaskCanceledExceptions) 在System.Threading.Tasks.Task 1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task
1.get_Result () 在BeatGenerator.BeatGeneratorMain。 <> c.b__2_0(任務1 postTask) in C:\Users\xxx\Documents\VS2012\DrumBeats\BeatGenerator\BeatGeneratorMain.cs:line 72 at System.Threading.Tasks.ContinuationResultTaskFromResultTask
2.InnerInvoke() 在System.Threading.Tasks.Task.Execute()
以下是錯誤行:
var response = await http.PostAsJsonAsync("http://localhost:45321/api/drumcorp/beats/generate", drumbeat)
.ContinueWith((postTask) => postTask.Result.EnsureSuccessStatusCode());
這是連接控制檯應用程序到API控制器:
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);
}
}
}
這是Web API控制器應用程序的相關部分:
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只是一個簡單的幫助程序方法,它處理節拍並吐出一個字符串。
我得到了同樣的錯誤:類型System.AggregateException「的異常出現在mscorlib中。 DLL,但沒有在用戶代碼中處理 – SkyeBoniwell
是否有可能在github上籤入解決方案。我可以編譯來檢查問題。似乎更像是資源獲取的衝突 – lazy