AggregateException "发生一个或多个错误。发送请求时发生错误。"

Vie*_*yen 6 c# wcf httpclient

我试图将文件从我的 WCF .Net 框架 4.5 发布到 API 休息区。这是我的代码:

public string CreateConclusion(string[] instanceUIDs)
    {
        var root = @"C:\";
        string filename = "1.2.840.114257.1.9.1245.56421.52314.1119854.01248.dcm";

            using (var client = new HttpClient())
            {
                var stream = new FileStream(root + filename, FileMode.Open);

                using (var content =
                    new MultipartFormDataContent("Upload----" + DateTime.Now.ToString(CultureInfo.InvariantCulture)))
                {
                    content.Add(new StreamContent(stream), "fileToUpload", filename);

                    using (var message = client.PostAsync("https://localhost:44343/api/ConclusionReports/UploadFile", content).Result)
                    {
                        var input = message.Content.ReadAsStringAsync();

                        return !string.IsNullOrWhiteSpace(input.Result) ? Regex.Match(input.Result, @"http://\w*\.directupload\.net/images/\d*/\w*\.[a-z]{3}").Value : null;
                    }
                }
            }

    }
Run Code Online (Sandbox Code Playgroud)

它不起作用并抛出异常:“发生一个或多个错误。发送请求时发生错误。”

有没有人可以帮我解决这个问题?先感谢您

Tor*_*tad 15

总是可以解开聚合异常以发现真正的原因。尝试在 try-catch 中编写您的客户端调用,如下所示:

    try {


    //Some risky client call that will call parallell code / async /TPL or in some way cause an AggregateException 

   }
   catch (AggregateException err){
    foreach (var errInner in err.InnerExceptions) {
     Debug.WriteLine(errInner); //this will call ToString() on the inner execption and get you message, stacktrace and you could perhaps drill down further into the inner exception of it if necessary 
     }   
   }
Run Code Online (Sandbox Code Playgroud)

  • err.ToString(); 还将捕获所有内部异常和堆栈跟踪。 (3认同)
  • 谢谢,我不知道这一点。但调试体验也许更好。您还可以使用此方法重新抛出某些异常并记录其他异常。 (2认同)