我有一个需要 Oauth 令牌进行授权的 OData svc。元数据 URL 可在此处获得。
然而,
let MySvc = ODataService<"https://wamsstageclus001rest-hs.cloudapp-int.net/API/$metadata?api-version=1.0">
返回错误reading schema, 404
。
我错过了什么?如何使用 API?
VS2012 附带的 FSharp.Data.TypeProviders.dll 中有一个关于如何附加$metadata
到 URL 的错误。
幸运的是,类型提供程序只是设计时需要的“另一个库”,因此为了解决这个错误(以及其他一些类型提供程序问题),我们目前的计划是在带外发布一个更新的类型提供程序库。从历史上看,在 VS2010 中,F# 团队在 VS 发布后一两个月对 F# 编译器/库源和 powerpack 进行了开源发布更新,因此,如果有人假设 VS2012 也是如此,那么这可能是我们向类型提供程序发布一些更新。(目前我无法提供更多发布时间表信息。)
您确定这是要使用的正确 URL。通常,您提供服务的 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