Синтаксический анализ сценария конфигурации автозаказки в .Net / C # - PullRequest
1 голос
/ 15 сентября 2008

Чтобы мое приложение (.Net 1.1) использовало прокси-сервер, настроенный системой (через скрипт proxy.pac), я использовал вызовы взаимодействия с WinHTTP-функцией WinHttpGetProxyForUrl, передавая URL-адрес proxy.pac, полученный из реестра .

К сожалению, я столкнулся со сценарием развертывания, где это не работает, так как файл proxy.pac развертывается локально на жестком диске пользователя, а URL-адрес "file: // C: // xxxx"

Как четко указано в документации WinHttpGetProxyForUrl, он работает только со схемами http и https, поэтому не работает с файлом: //

Я рассматриваю 2 "уродливых" решения проблемы (pac-файл - это javascript):

  1. Создание отдельного проекта JScript.NET с одним классом с одним статическим методом Eval (строка) и использование его для оценки во время выполнения функции, считанной из файла pac

  2. Сборка во время выполнения сборки JScript.NET и загрузка ее.

Поскольку эти решения действительно ужасны :), кто-нибудь знает лучший подход? Есть ли функция Windows, которую я могу использовать с помощью взаимодействия?

Если нет, то что вы, ребята, думаете о двух вышеуказанных решениях - какое из них вы бы предпочли?

Ответы [ 4 ]

2 голосов
/ 25 ноября 2008

Просто мысль: почему бы не создать микро-веб-сервер, который может обслуживать локальный файл PAC через сокет localhost. Вы должны использовать случайный URI для контента, чтобы было трудно просматривать его непредвиденными способами.

Затем можно передать URL-адрес типа http://localhost:1234/gfdjklskjgfsdjgklsdfklgfsjkl в функцию WinHttpGetProxyForUrl и разрешить ему извлекать файл PAC с вашего микросервера.

(взломать ... взломать ... взломать ...)

1 голос
/ 07 октября 2009

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.

0 голосов
/ 23 октября 2008

Я не могу ответить на ваш вопрос напрямую, но из-за реализации mozilla возникла определенная дискуссия о поддержке файловых URL. Это был сетевой контроль против дебатов об удобстве локального пользователя.

0 голосов
/ 15 сентября 2008

К сожалению, я не могу ответить на вашу проблему (хотя несколько лет назад я играл с jscript.net, и было бы всего несколько строк, чтобы построить и запустить таким образом)

Некоторое время назад я натолкнулся на аналогичный сбой proxy.pac с личным файлом proxy-the-office-proxy - в конце концов, я выбрал самый простой вариант и поместил его на свой собственный сайт IIS, и это было круто твердый и работает безупречно со всем на моем компьютере.

Иногда лучше всего сдаться и работать с тем, что предоставляется :)

...