2008-09-15 16 views
1

爲了讓我的應用程序(.net 1.1)能夠使用系統配置的代理服務器(通過proxy.pac腳本),我使用了一個Interop對WinHTTP函數WinHttpGetProxyForUrl的調用, proxy.pac網址我從註冊表中獲得。在.Net/C中解析Autoproxy配置腳本#

不幸的是,我打了一個部署方案,在這不起作用,因爲文件proxy.pac文件在用戶的硬盤上的本地部署和URL是「文件:// C:// XXXX」

可以清楚地在WinHttpGetProxyForUrl文檔中闡明的,它僅適用於HTTP和HTTPS方案,那麼它失敗文件://

我考慮2「醜陋」的解決問題的方案(PAC文件是JavaScript的) :

  1. 創建一個單獨的JScript.NET項目,帶有一個sin使用單個靜態方法Eval(string)的gle類,並使用它在運行時評估從pac文件讀取的函數

  2. 在運行時構建JScript.NET程序集並加載它。

由於這些解決方案真的很難看:)是否有人知道更好的方法?有沒有我可以使用槽互操作的Windows功能?

如果不是,你們對上述2種解決方案有什麼看法?你們更喜歡哪一種?

回答

2

只是一個想法:爲什麼不創建一個微型Web服務器,可以通過本地主機套接字服務本地PAC文件。您應該爲內容使用隨機URI,以便以意想不到的方式瀏覽此內容。

然後,您可以將像http://localhost:1234/gfdjklskjgfsdjgklsdfklgfsjkl這樣的URL傳遞給WinHttpGetProxyForUrl函數,並允許它從微服務器中提取PAC文件。

(黑客...黑客...黑客...)

+0

套接字便宜又容易 - HTTP GET同樣易於解析/響應。這聽起來幾乎就像我的nobrainer解決方案。 (當比較運行自己的evals等) – stephbu 2008-11-25 16:11:30

+0

好主意:)如果我使用.Net 2.0,可以利用HttpListener。但是在1.1中,我必須編寫太多的代碼。但是這個想法+1。 – 2008-11-25 19:26:59

0

不能不幸回答您的問題(雖然幾年前,我與jscript.net玩,它只會是幾行構建和運行方式)

我打了一個類似打嗝proxy.pac文件隨後還有一個個人的辦公室代理文件 - 最後,我用最簡單的方法進行了操作,並將其放到了自己的IIS站點中,並且它堅如磐石,完美地運行在我的電腦上。

有時它所能給予的,並提供了什麼工作:)

+0

不幸的是,我無法做到這一點 - 我的應用程序是最終用戶,而這是公司範圍的設置,他們不會改變它。也許我可以說服他們在他們的防火牆上打一個洞,允許非代理訪問我們的服務器,但如果我有「內置」解決方案,情況會更好。 – 2009-01-28 00:37:29

0

我不能回答你直接的問題,但來自Mozilla的執行工作有關於配套文件的URL一定的爭論。這是一個網絡控制與本地用戶便利的辯論。