1

类型提供程序“Microsoft.FSharp.Data.TypeProviders.DesignTime.DataProviders”报告错误:读取架构时出错。远程服务器返回错误:(401) Unauthorized。

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

类型提供者的静态类型参数

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

1 回答 1

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
于 2013-08-24T00:42:59.940 回答