Я пытаюсь получить маршруты проезда через службы Bing Maps REST. Кажется, что ответ проходит, но при десериализации в JSON с предоставленными контрактами данных возникает следующее исключение:
Элемент ':item' содержит данные типа, который соответствует имени 'http://schemas.microsoft.com/search/local/ws/rest/v1:Route'. Десериализатор не знает ни одного типа, который сопоставляется с этим именем. Рассмотрите возможность использования DataContractResolver или добавьте тип, соответствующий "Route", в список известных типов, например, используя атрибут KnownTypeAttribute или добавив его в список известных типов, передаваемых в DataContractSerializer.
Ссылка MSDN, над которой я работаю, доступна по адресу: http://msdn.microsoft.com/en-us/library/jj819168.aspx
Я скопировал необходимые DataContracts по ссылке внизу примера, но не могу понять, почему возникает исключение при десериализации. Вот код, который я выполняю:
private async void btnGetRoute_Click(object sender, RoutedEventArgs e)
{
string locationFrom = "100 Commonwealth Ave Boston MA";
string locationTo = "100 Yawkey Way Boston MA";
string url = string.Format("http://dev.virtualearth.net/REST/V1/Routes/Driving?wp.0={0}&wp.1={1}&key={2}", locationFrom, locationTo, ConfigurationManager.AppSettings["BingMapsKey"]);
Uri drivingRouteRequest = new Uri(url);
Response response = await GetResponse(drivingRouteRequest);
}
private async Task<Response> GetResponse(Uri uri)
{
HttpClient client = new System.Net.Http.HttpClient();
var response = await client.GetAsync(uri);
using (var stream = await response.Content.ReadAsStreamAsync())
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Response));
return ser.ReadObject(stream) as Response;
}
}
Есть предположения?