Simple.OData.Client не работает с Silverlight 5
Следующий небольшой фрагмент кода прекрасно работает в консольном приложении, но в приложении Silverlight 5 (где оно мне нужно!) Происходит сбой, вызывая исключение NotSupportedException:
var client = new ODataClient("http://MYSERVER:9000/OData_v4/ProductionDb/");
try
{
//This statement throws in Silverlight 5 but not in a .NET 4.5 Console application!!??
var Meter = await client
.For("MyEntityName")
.Top(1)
.FindEntryAsync();
foreach (var entry in Meter)
Debug.WriteLine(string.Format("{0}: {1}", entry.Key, entry.Value));
}
catch (NotSupportedException ex)
{
Debug.WriteLine(string.Format( "Exception {0}: {1} ", ex.GetType().ToString(), ex.Message ));
}
Почему это не работает в Silverlight? Согласно документации, он должен работать с Silverlight прямо из коробки....?
Я использовал NuGet для установки Simple.OData.Client версии. 4.13.0 (= последняя стабильная версия) в мой проект Visual Studio 2015 Silverlight.
2 ответа
Добавьте следующий код в конструктор MainPage сразу после InitializeComponent():
HttpWebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
HttpWebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp);
Это должно решить проблему (по крайней мере, если бы я смог запустить ваш код с этими изменениями). Довольно разочаровывает, но не имеет ничего общего с библиотекой OData. Вы можете прочитать больше о проблеме здесь: https://mattduffield.wordpress.com/2011/12/11/silverlight-specified-method-is-not-supported-on-this-request/