2014-07-23 4 views
0

MVC 5 웹 응용 프로그램에서 작업하고 있습니다.webClient.UploadValuesAsync 요청을 보내지 않음

저는 진행 막대를 표시하기 위해 웹 응용 프로그램에서 작업 진행을 게시하려고 Quartz.Net 작업 스케줄러에서 작업을 실행하고 있습니다.

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)은 웹 클라이언트가 보낸 적이없는 것처럼이 요청을 표시하지 않습니다.

이 동작은 어디서 발생합니까? 나는 명백한 것을 놓치고 있는가?

+0

'webClient.IsBusy'가 true이면 어떻게합니까? – usr

+0

@usr이 경우 아무것도 수행하지 않습니다. –

답변

0

내가 발견 :

을 그 synchrone 대응 webClient.UploadValueswebClient.UploadValuesAsync을 변경하여 내 웹 응용 프로그램에서 내부 서버 오류가 발생했습니다.

즉, 요청이 올바르게 전송됨을 의미합니다.

이렇게 (this answer 덕분에) :

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

나는 오류를 발견하고이를 정정 할 수 있었다.

나머지 수수께끼는 왜 내가 Fiddler에서 보내는이 요청을 볼 수 없는지입니다. 지금은 중요하지 않지만 호기심에서 나는 제안을 계몽하는 데 열심이다.

+0

사이트가 IIS에서 실행 중입니까? IIS는 여러 사용자가 웹 사이트를 실행합니다. Fiddler는 현재 사용자를 자동 프록시합니다. – usr

+0

@usr 예, IIS에서 실행됩니다. 나는 그 말이 맞는 것 같아요. 감사 ! –

관련 문제