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);

这段代码执行没有错误,但是由于某种原因,ReportControllerSetProgression动作从未被调用。

此外,网络流量监控(Fiddler)从未显示此请求,就像它从未由web客户端发送一样。

这种行为从何而来?

webClient.UploadValuesAsync未发送请求

我发现了:

通过将webClient.UploadValuesAsync更改为其同步对应物webClient.UploadValues,我从我的web应用程序中获得了内部服务器错误。

表示请求被正确发送。

这样做(感谢这个答案):

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

我能找到错误并改正它。

剩下的谜题是为什么我看不到这个请求在Fiddler中发送。现在还不重要,但出于好奇,我愿意接受有启发性的建议。