webClient.UploadValuesAsync未发送请求
本文关键字:请求 UploadValuesAsync webClient | 更新日期: 2023-09-27 18:14:24
我正在做一个MVC 5 web应用程序。
我正在石英上运行作业。Net作业调度器,试图在我的web应用程序上发布作业进度以显示进度条。
作业部分(调度程序在同一台机器上运行):
webClient = new WebClient
{
CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore)
};
NameValueCollection values = new NameValueCollection();
values["JobId"] = this.jobId.ToString();
values["Progression"] = progression.Progression.ToString();
values["Status"] = progression.Status;
values["Description"] = progression.Description;
if (!webClient.IsBusy)
webClient.UploadValuesAsync(new Uri("http://localhost/Report/SetProgression"), "POST", values);
这段代码执行没有错误,但是由于某种原因,ReportController
的SetProgression
动作从未被调用。
此外,网络流量监控(Fiddler)从未显示此请求,就像它从未由web客户端发送一样。
这种行为从何而来?
我发现了:
通过将webClient.UploadValuesAsync
更改为其同步对应物webClient.UploadValues
,我从我的web应用程序中获得了内部服务器错误。
表示请求被正确发送。
这样做(感谢这个答案):
catch (WebException ex)
{
using (var reader = new StreamReader(ex.Response.GetResponseStream()))
{
string responseText = reader.ReadToEnd();
}
}
我能找到错误并改正它。
剩下的谜题是为什么我看不到这个请求在Fiddler中发送。现在还不重要,但出于好奇,我愿意接受有启发性的建议。