簡體   English   中英

.Net / C#中的自動代理配置腳本解析

[英]Autoproxy configuration script parsing in .Net/C#

為了使我的應用程序(.Net 1.1)使用系統配置的代理服務器(通過proxy.pac腳本),我使用了對WinHTTP函數WinHttpGetProxyForUrl的互操作調用,傳遞了我從注冊表中獲得的proxy.pac url。

不幸的是,我遇到了一個無法解決的部署方案,因為proxy.pac文件已本地部署在用戶的硬盤驅動器上,並且網址為“ file:// C:// xxxx”

正如WinHttpGetProxyForUrl文檔中明確指出的那樣,它僅適用於http和https方案,因此對於file://失敗。

我正在考慮2個“丑陋”的解決方案(pac文件是javascript):

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

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

由於這些解決方案確實很丑陋:),有人知道更好的方法嗎? 有可以使用槽互操作的Windows功能嗎?

如果不是,那么您對以上兩種解決方案有何想法-您會選擇哪一種?

只是想一想:為什么不創建一個微型Web服務器,該服務器可以通過本地主機套接字為本地PAC文件提供服務。 您應該為內容使用隨機URI,這樣很難以意想不到的方式瀏覽它。

然后,您可以將諸如http:// localhost:1234 / gfdjklskjgfsdjgklsdfklgfsjkl之類的URL傳遞到WinHttpGetProxyForUrl函數,並允許它從您的微型服務器中提取PAC文件。

(駭客...駭客...駭客...)

FWIW: https ://web.archive.org/web/20150405115150/http: //msdn.microsoft.com/en-us/magazine/cc300743.aspx描述了如何使用JScript.NET引擎安全地執行此操作。

https://web.archive.org/web/20090220132508/http://msdn.microsoft.com/en-us/library/aa383910(VS.85).aspx解釋了如何使用WinINET的實現。

我無法直接回答您的問題,但是從mozilla實施開始,關於支持文件URL的爭論一直很激烈。 這是網絡控制與本地用戶便利性的爭論。

不幸的是,無法解決您的問題(盡管幾年前我玩過jscript.net,但以這種方式構建和運行只需要幾行)

不久前,我遇到了一個類似的proxy.pac打ic,帶有一個個人的Office-around-office-proxy文件-最后,我選擇了最簡單的選項並將其放到自己的IIS站點中,並且運行穩定我的電腦上的一切都完美無缺。

有時最好屈服並使用提供的內容:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM