如何使用OA#授权使用F#ODATA TypeProvider

时间:2012-07-08 23:27:54

标签: f#

我有一个需要Oauth令牌进行授权的OData svc。元数据网址可用here

然而,

let MySvc = ODataService<"https://wamsstageclus001rest-hs.cloudapp-int.net/API/$metadata?api-version=1.0">

返回错误reading schema, 404

我错过了什么?我该如何使用API​​?

2 个答案:

答案 0 :(得分:2)

FS2012附带的FSharp.Data.TypeProviders.dll中存在一个错误,该错误与如何将$metadata附加到网址有关。

幸运的是,类型提供程序是设计时需要的“另一个库”,因此要解决此错误(以及其他类型的提供程序问题),我们当前的计划是在带外发布更新的类型提供程序库。从历史上来说,在VS2010之后,F#团队在VS发布后的一两个月内完成了F#编译器/库源和powerpack的开源发布更新,因此如果对VS2012假设相同,那么这可能是我们的可能时间。发布一些类型提供程序的更新。 (我现在不能再提供任何发布时间表信息。)

答案 1 :(得分:1)

您确定使用的是正确的网址吗?通常,您提供服务的URL,服务提供商自己查找元数据。但是,您的代码提供了元数据的URL。

因此,类型提供程序可能会向URL添加其他信息以便使用它,并且该服务不知道如何处理这些复合URL。

编辑:显然有人觉得我不清楚。

https://wamsstageclus001rest-hs.cloudapp-int.net/API/$metadata?api-version=1.0

当ODataAdapter尝试获取元数据信息时将变为

https://wamsstageclus001rest-hs.cloudapp-int.net/API/$metadata?api-version=1.0$metadata

或类似的东西。如果您浏览到该特定站点,您将看到404错误。

但是,如果您提供ODataAdapter

https://wamsstageclus001rest-hs.cloudapp-int.net/API/

然后添加元数据不会导致404错误。您应该能够保留版本信息,因为它使用的是URL类而不是字符串操作(或者我希望如此),它看起来像下面的

    https://wamsstageclus001rest-hs.cloudapp-int.net/API/?api-version=1.0