2012-12-13 78 views
6

我想使用odata类型提供程序,但在编译时会导致下一个错误:(407) proxy authentication required。 设计时没有错误。有人知道如何设置类型提供程序中的代理吗? 示例代码:通过http代理的F#Odata服务类型提供程序

open Microsoft.FSharp.Data.TypeProviders 
type db = ODataService<"http://ebayodata.cloudapp.net/"> 
[<EntryPoint>] 
    let main argv= 
      let eBay = db.GetDataContext() 
      0 
+0

也许这篇文章提供了一些线索:http://www.markhneedham.com/blog/2009/07/11/f -after-a-file-from-behind-a-proxy/ – Christian

+0

如果指定凭证,会发生什么情况? 'Ebay.Credentials < - System.Net.NetworkCredential(“user”,“pass”,“domain”)' –

+0

对不起,那是愚蠢的,你说它是在编译期间,而不是在运行时。 –

回答

2

blog posting提到了一些示例代码可以覆盖代理。

Freebase类型提供程序可以与.NET 3.5,.NET 4.0,.NET 4.5,Silverlight和可移植程序设计一起使用。在某些情况下可能需要代理。 Tests \ ProjectsUsingTypeProvider.sln中的项目显示 这些不同情况的一些示例库。

您也可以专门查看this file

+0

它们是指代理作为设计模式。但我的意思是代理作为HTTP网络代理 – msmaximuss

+0

不,他们的意思是代理在“http网络代理”。看看我刚添加到我的答案的文件。 –

0

尝试如下指定一个默认Web代理:

open System.Net // for WebProxy etc. 
open Microsoft.FSharp.Data.TypeProviders 

// put here actual proxy address 
let proxy = new WebProxy("http://192.168.1.1:3128") :> IWebProxy 
// put here your credentials if needed 
proxy.Credentials <- NetworkCredential("proxy_user", "password") 
// set up a default proxy 
WebRequest.DefaultWebProxy <- proxy 

// here the default proxy will be used 
type db = ODataService<"http://ebayodata.cloudapp.net/"> 

或者你可以尝试使用它在IE指定了代理如下:如果你有,而一个错误

WebRequest.DefaultWebProxy <- WebRequest.GetSystemWebProxy() 
WebRequest.DefaultWebProxy.Credentials <- CredentialCache.DefaultNetworkCredentials 

那么编译这可能是因为F#编译器(Fsc.exe)无法连接到代理服务器。您可以通过修改Fsc.exe.config解决这个问题,只需添加下configuration部分下面的文字:

<system.net> 
    <defaultProxy useDefaultCredentials="true" />  
    </system.net> 
相关问题