webClient.UploadValuesAsync不发送请求

时间:2014-07-23 08:18:07

标签: c# asp.net asp.net-mvc asp.net-mvc-5 webclient

我正在使用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客户端发送一样。

这种行为可能来自哪里?我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:0)

我发现了:

通过将webClient.UploadValuesAsync更改为同步对等webClient.UploadValues,我的网络应用程序出现内部服务器错误。

这意味着请求已正确发送。

这样做(感谢this answer):

catch (WebException ex)
{
    using (var reader = new StreamReader(ex.Response.GetResponseStream()))
    {
        string responseText = reader.ReadToEnd();
    }
}

我能找到错误并纠正错误。

剩下的谜团是为什么我看不到这个请求在Fiddler发送。现在没关系,但出于好奇,我愿意接受启发性的建议。