Simple.OData.Client Silverlight 5 失败

Simple.OData.Client fails with 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 项目。

试试这个:

var Meter = await client
            .For<MyEntityName>()
            .Top(1)
            .FindEntryAsync();

找到here

将以下代码添加到您的 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/