browsermob proxy.NET System.Diagnostics.Process приводит к тому, что 32-битные процессы не могут получить доступ к модулям 64-битной ошибки процесса

У меня есть компьютер с win7 x64 с установленным VS2013, а также экземпляр Win Server 2012 с установленным VS2013. Я пытаюсь заставить BrowserMob Proxy.NET работать на сервере для установки JEnkins/Selenium, которую я запускаю. Когда я запускаю AutomatedTester.BrowserMob Server.Start, расположенный в файле Server.cs, и он создает экземпляр объекта Process, я получаю сообщение об ошибке: «32-разрядные процессы не могут получить доступ к модулям 64-разрядного процесса», который имеет NativeErrorCode 299 с указанием: Выполнена только часть запроса ReadProcessMemory или WriteProcessMemory.

Теперь, если я запускаю его на своем компьютере с Win7 x64, он работает просто отлично, но когда я запускаю то же самое на своем компьютере с сервером 2012, он выдает указанную выше ошибку. Я запускаю IIS8 на сервере, где IIS7 работает на Windows 7. Если у кого-то есть какие-либо идеи о том, что я могу сделать, напишите, пожалуйста :) Я построил проект, используя платформу 4.5 и выбранный «Любой процессор».

Что меня беспокоит, так это то, что это отлично работает на моем локальном компьютере, но не работает на сервере. Я беспокоюсь, что я отслеживаю это как конкретную проблему архитектуры, и, возможно, это какой-то параметр безопасности или что-то, о чем я не знаю. Еще одна информация: этот Windows 2012 Server работает на AWS. Я разместил блок кода ниже, с которым это происходит. Спасибо всем!

try
{
var _serverProcess = new Process
{
StartInfo = { FileName = pathToBrowserMobProxy }
};
}
catch (System.ComponentModel.Win32Exception e)
{
throw e;             
}

person xtr33me    schedule 25.01.2014    source источник


Ответы (1)


Это произошло из-за того, что ссылка на библиотеку NewtonSoft Json.net была версией x32, которая поставлялась с оболочкой AutomatedTester BrowserserMob, а моя коробка была x64. Я удалил ссылку на x32-версию newtonsoft и добавил пакет/ссылку Nuget newtonsoft. Как только я это сделал, я, наконец, смог открыть командное окно и запустить прокси-сервер browsermob. Затем я столкнулся с небольшой проблемой, когда MSTest работает только как x32, что, как я полагаю, должно работать. Итак, в Jenkins я установил плагин VSTest Runner и запустил тесты, и теперь все работает нормально. Надеюсь, это поможет кому-то однажды.

person xtr33me    schedule 27.01.2014