2016-09-15 5 views
0

대기중인 스토리지에 의해 트리거 된 웹 작업이 있으며 새 메시지를 받으면 웹 API 호출이 생성됩니다. 나는 fiddler에서 get 요청을 테스트했고 작동하지만 webjob 내에서 httpclient getasync를 통해 요청을하면 500 내부 서버 오류가 발생합니다. webjob 내에서 웹 API 호출을 할 수 있습니까?Azure App 서비스 WebJob httpclient getasync 요청으로 500 내부 서버 오류가 발생했습니다.

+0

나는 몇 가지 테스트를 해봤하고 그것이 붙어하여 API를 응용 프로그램에서 방법을 요구하는 webjob처럼 보인다 500 내부 서버 오류가 발생하지만 다른 웹 API를 호출하면 작동합니다. 왜 이런 일이 일어나는 지 아는 사람이 있거나 내가 잘못한 일을하는 경우 그 이야기를 듣고 싶습니다. 그런데이 테스트는 하늘빛으로의 사전 배치입니다. 그것은 로컬 컴퓨터에서 수행됩니다. – rjespera

답변

0

나는 fiddler에서 get 요청을 테스트했지만 제대로 작동하지만 webjob에서 httpclient getasync를 통해 요청을하면 500 내부 서버 오류가 발생합니다.

내가 아는 한, 500 내부 서버 오류는 웹 API 서버 쪽에서 발생합니다. 웹 API 응용 프로그램에서 try-catch로 코드를 래핑하고 자세한 오류를 찾으십시오.

webjob에서 웹 API를 호출 할 수 있습니까?

WebJob에서 http 요청을 보낼 수 있습니다. 내 코드 샘플은 내 편이 나 Azure 모두에서 잘 작동 할 수 있습니다. 참조 할 수 있습니다.

Functions.cs

// This function will get triggered/executed when a new message is written 
// on an Azure Queue called queue. 
public static async void ProcessQueueMessage([QueueTrigger("queue")] string message, TextWriter log) 
{ 
    log.WriteLine(message); 
    string requestUrl = "https://bruce-chen-001.azurewebsites.net/api/values"; 
    HttpClient client = new HttpClient(); 
    var response = await client.GetAsync(requestUrl); 
    log.WriteLine("response:{0}", await response.Content.ReadAsStringAsync()); 
} 

결과

response:["value1","value2"]

+0

덕분에 위의 테스트 메소드와 비슷한 기능을 가지고 있는데 아래에 연결된 webjobs가 아닌 다른 앱 API 서비스를 호출 할 때 제대로 작동합니다. – rjespera

+0

public static void ProcessQueueMessage ([ QueueTrigger ("queueName")] 문자열 메시지, TextWriter 로그) { HttpClient client = new HttpClient(); client.Timeout = TimeSpan.FromMinutes (15); var response = 클라이언트를 기다립니다 .GetAsync (새 Uri ("http : // localhost : 1100/api/values ​​/ 1")); using (HttpContent content = response.Content) { if (response.StatusCode == System.Net.HttpStatusCode.OK) { string result = await content.ReadAsStringAsync(); } } } – rjespera

+0

webjob을 다른 api 앱으로 옮길 때 같은 코드가 정상적으로 작동했습니다. 다시 이것은 로컬 테스트이며 모든 URL은 localhost입니다. – rjespera

관련 문제