我正在尝试将OData类型提供程序与受表单身份验证保护的Sharepoint站点一起使用。使用浏览器连接会显示嵌入的浏览器" auth form"进行身份验证。
使用类型提供程序我无法连接到它,我找不到提供凭据的方法:
我已经看到您可以在此步骤之后提供凭据,如下所示:
let db = service.GetDataContext() in
db.Credentials <-
(NetworkCredential("user_name", "password", "domain") :> ICredentials)
但是我甚至无法达到这一点,无论是在设计时还是在运行时,代码都会抛出401错误,如截图所示。
那么,我应该如何连接到表单身份验证后面的OData服务?
感谢。
答案 0 :(得分:1)
这里有几件事情要发生。首先,401未经授权的结果是登录页面发送到您的浏览器的结果。因此,即使您的脚本可以加载该登录页面,它仍然会将其视为401,您必须以某种方式处理它。
但真正的问题是,您的浏览器的Cookie与F#环境(或任何其他程序,实际上)完全分开。您需要使用HTTP请求发送授权令牌,以便服务器知道您的身份。这意味着您可能必须提供自己的登录界面,该界面知道如何使用该表单,保存cookie并将其与您的请求一起传递。
我不确定如何使用类型提供程序来完成此操作,但另一个问题可能有所帮助:Send Authorization cookie when calling OData service