/ / HttpWebRequest dáva 500 stavový kód, ale vracia JSON z API? - c #, asp.net-web-api, httpwebrequest, httpwebresponse, http-status-code-500

HttpWebRequest dáva 500 stavový kód, ale vracia JSON z API? - c #, asp.net-web-api, httpwebrequest, httpwebresponse, http-status-kód-500

Pozadie otázky:

Snažím sa urobiť jednoduchý HttpWebRequest Web API, ktoré som hostil v Azure.

Otázka:

Ak sa dostanem k môjmu koncovému bodu webového rozhrania API cez prehliadač alebo nástroj žiadosti, napríklad Postman, dostávam JSON odpoveď bez problémov.

Ak sa pokúsim pristúpiť k rovnakému koncovému bodu prostredníctvom tlačidla a HttpWebRequest Zavolajte mi 500 fatálnych chýb, ale som schopný vidieť v odozve vlastnosť Try Catch že JSON odpoveď.

The remote server returned an error: (500) Internal Server Error.

Kód:

Nasleduje jednoduchá požiadavka, ktorú robím na Web API, ktoré mám. Ako už bolo uvedené, v Catch odpoveď je vracajúc sa späť JSON Očakávam, ako je zobrazené:

{"ResponseMessage":"OK","ResponseContent:[{"kind":"youtube#playlistItem","etag":""gMxXHe- ........ etc }]}

Požiadavka:

 string url ="http://myapi.azurewebsites.net/api/videos/GetYouTubeVideos";

try
{
HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;

WebResponse wr = req.GetResponse();
}
catch (WebException wex)
{
var pageContent = new StreamReader(wex.Response.GetResponseStream())
.ReadToEnd();
}

Oceňujem, že identifikácia príčiny 500nn "t rovno dopredu, ale môže niekto poskytnúť dôvod, prečo by som sa dostať túto chybu, ale aj naďalej dostávajú JSON zo služby, ktorá je zrejme hodiť výnimku?

odpovede:

0 pre odpoveď č. 1

existujú niektoré vlastnosti WebHeaders musíte byť opatrní!

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "GET";
webRequest.Proxy = webProxy;
webRequest.AllowAutoRedirect = true;
webRequest.Timeout = 20 * 1000;
webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
webRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36";
WebResponse wr = webRequest.GetResponse()