Запрос URL-адреса метаданных OData завершается ошибкой, если я установил версию

Следующий код получает 500:

WebRequest request =
  WebRequest.Create("https://services.odata.org/TripPinRESTierService/$metadata");
HttpWebRequest webRequest = request as HttpWebRequest;
webRequest.Accept = "application/atom+xml,application/xml";
request.Headers.Add("DataServiceVersion", "4.0");
request.Headers.Add("OData-MaxVersion", "4.0");
webRequest.AutomaticDecompression =
  DecompressionMethods.Deflate | DecompressionMethods.GZip;

// this throws the 500
var response = request.GetResponse();

Но это удается:

WebRequest request =
   WebRequest.Create("https://services.odata.org/TripPinRESTierService/$metadata");
HttpWebRequest webRequest = request as HttpWebRequest;
webRequest.Accept = "application/atom+xml,application/xml";
request.Headers.Add("OData-MaxVersion", "4.0");
webRequest.AutomaticDecompression =
  DecompressionMethods.Deflate | DecompressionMethods.GZip;
var response = request.GetResponse();

Это вызывает ошибку:

WebRequest request = 
  WebRequest.Create("https://services.odata.org/TripPinRESTierService/Airlines");
HttpWebRequest webRequest = request as HttpWebRequest;
webRequest.Accept = "application/atom+xml,application/xml";
request.Headers.Add("DataServiceVersion", "4.0");
request.Headers.Add("OData-MaxVersion", "4.0");
webRequest.AutomaticDecompression =
  DecompressionMethods.Deflate | DecompressionMethods.GZip;

// this throws the 500
var response = request.GetResponse();

Есть ли что-то особенное, где я не должен указывать DataServiceVersion при запросе метаданных?

1 ответ

Решение

Согласно документации, заголовок OData-версииOData-Versionне DataServiceVersion.

Основываясь на моем тесте с использованием Postman, это то, что вызывало ошибку 500.

И, кстати, рассмотрите возможность использования HttpClient вместо того WebClient, работает асинхронно и легче, чем WebClient. Смотрите это и это.

Другие вопросы по тегам