我正在使用MVC 5 Web应用程序。
我在Quartz.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);
此代码执行时没有错误,但出于某种原因,SetProgression
的{{1}}操作永远不会被调用。
此外,网络流量监控(Fiddler)从不显示此请求,就像它从未被Web客户端发送一样。
这种行为可能来自哪里?我错过了一些明显的东西吗?
答案 0 :(得分:0)
我发现了:
通过将webClient.UploadValuesAsync
更改为同步对等webClient.UploadValues
,我的网络应用程序出现内部服务器错误。
这意味着请求已正确发送。
这样做(感谢this answer):
catch (WebException ex)
{
using (var reader = new StreamReader(ex.Response.GetResponseStream()))
{
string responseText = reader.ReadToEnd();
}
}
我能找到错误并纠正错误。
剩下的谜团是为什么我看不到这个请求在Fiddler发送。现在没关系,但出于好奇,我愿意接受启发性的建议。