F#OData类型提供商未经授权(401)

时间:2016-01-28 08:40:08

标签: .net f# odata type-providers

我正在尝试将OData类型提供程序与受表单身份验证保护的Sharepoint站点一起使用。使用浏览器连接会显示嵌入的浏览器" auth form"进行身份验证。

使用类型提供程序我无法连接到它,我找不到提供凭据的方法:

enter image description here

我已经看到您可以在此步骤之后提供凭据,如下所示:

let db = service.GetDataContext() in
    db.Credentials <-
        (NetworkCredential("user_name", "password", "domain") :> ICredentials)

但是我甚至无法达到这一点,无论是在设计时还是在运行时,代码都会抛出401错误,如截图所示。

那么,我应该如何连接到表单身份验证后面的OData服务?

感谢。

1 个答案:

答案 0 :(得分:1)

这里有几件事情要发生。首先,401未经授权的结果是登录页面发送到您的浏览器的结果。因此,即使您的脚本可以加载该登录页面,它仍然会将其视为401,您必须以某种方式处理它。

但真正的问题是,您的浏览器的Cookie与F#环境(或任何其他程序,实际上)完全分开。您需要使用HTTP请求发送授权令牌,以便服务器知道您的身份。这意味着您可能必须提供自己的登录界面,该界面知道如何使用该表单,保存cookie并将其与您的请求一起传递。

我不确定如何使用类型提供程序来完成此操作,但另一个问题可能有所帮助:Send Authorization cookie when calling OData service