ODataService类型提供程序错误:(401)未经授权

时间:2013-08-23 22:02:24

标签: ssl f# odata type-providers

  

类型提供者   'Microsoft.FSharp.Data.TypeProviders.DesignTime.DataProviders'   报告错误:读取架构时出错。远程服务器返回了   错误:(401)未经授权。

有没有办法将OData类型提供程序与需要用户名和密码的OData服务一起使用?

Static type parameters for the type provider

  • ServiceUri:string OData服务的URI字符串。
  • LocalSchemaFile:string包含架构的文件的路径。此文件由类型提供程序编写。
  • ForceUpdate:bool要求在设计/编译时和本地服务可以直接连接到服务 文件刷新。默认值是true。当ForceUpdate是 false,提供程序对LocalSchemaFile中的更改作出反应。
  • ResolutionFolder:string在编译时用于解析相对文件路径的文件夹。默认值是该文件夹 包含项目或脚本。
  • DataServiceCollection:bool生成从DataServiceCollection派生的集合。默认值为false。

1 个答案:

答案 0 :(得分:3)

是的,但不幸的是它不是那么光滑,而且你没有得到编译时验证,这是类型提供者的一个很好的好处。

您需要从服务中获取$metadata并将其作为.csdl文件保存在本地,然后在代码中使用LocalSchemaFile静态参数。然后,您可以在数据上下文对象上设置凭据,以便在运行时进行身份验证。

// download http://services.odata.org/Northwind/Northwind.svc/$metadata to local file Metadata.csdl
type Northwind = ODataService<"http://services.odata.org/Northwind/Northwind.svc/",
                              LocalSchemaFile="Metadata.csdl",
                              ForceUpdate=false>

let db = Northwind.GetDataContext()
db.Credentials <- System.Net.CredentialCache.DefaultCredentials  // or whatever creds you need

// go party