【发布时间】:2014-03-05 23:10:03
【问题描述】:
我希望有人对此做出解释,因为它让我发疯。
我在 WinForms 应用程序中有以下代码,用于使用 HttpClient 将文件上传到 Web API 服务。
ProgressMessageHandler progressMsgHandler = new ProgressMessageHandler();
progressMsgHandler.HttpSendProgress += (s, e) =>
{
this.InvokeIfNeeded(() =>
{
// LOG
this.AddLogLine("Progress: " + e.ProgressPercentage.ToString());
});
};
using (var client = HttpClientFactory.Create(progressMsgHandler))
{
using (var content = new MultipartFormDataContent())
{
var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
var streamContent = new StreamContent(stream);
content.Add(streamContent);
var url = String.Format("{0}?src={1}", STR_URL_FILEMGMT, "IM");
client.PostAsync(new Uri(url), content).ContinueWith(task =>
{
if (task.Result.IsSuccessStatusCode)
{
this.InvokeIfNeeded(() =>
{
// LOG
this.AddLogLine("File has been uploaded OK!");
});
}
else
this.InvokeIfNeeded(() =>
{
// LOG
this.AddLogLine(String.Format("Error during upload: '{0}'", task.Exception.Message));
});
});
}
}
请注意,列出的整个代码也被包装在一个 try catch 中,如果有异常,将在其中打印。
对我来说很奇怪的是我根本没有打印任何日志行。既不是进步,也不是成功发布,既不是错误发布,也不是全局try catch。
在调试期间,我看到代码正在执行,但没有遇到日志行所在的任何断点。
可能我没有正确使用 HttpClient 或这些任务(顺便说一句,我是初学者)?有谁知道我的代码出了什么问题?
更新(从 Noseratio 获得解决方案后):
可以在here找到帮助我理解不需要处理 HttpClient 的额外信息
【问题讨论】:
标签: c# post upload task-parallel-library dotnet-httpclient