browsermob proxy.NET System.Diagnostics.Process导致“32位进程无法访问64位进程的模块”错误

时间:2014-01-25 05:37:01

标签: c#-4.0 jenkins selenium-webdriver windows-server-2012 browsermob

我有一台安装了VS2013的win7 x64的电脑,我有一个安装了VS2013的Win Server 2012实例。我正在尝试让BrowserMob Proxy.NET在服务器上运行我正在运行的JEnkins / Selenium安装。当我运行位于Server.cs文件中的AutomatedTester.BrowserMob的Server.Start并实例化一个Process对象时,我收到一条错误,指出:“32位进程无法访问64位进程的模块”,其NativeErrorCode为299,说明:只完成了ReadProcessMemory或WriteProcessMemory请求的一部分。

现在,如果我在Win7 x64机器上运行它,它可以正常运行,但是当我在Server 2012机器上运行相同的东西时,它会抛出上述错误。我在Windows 7上运行IIS7的服务器上运行IIS8。如果有人对我可能做的事情有任何想法,请发布:)我使用4.5框架和“任何CPU”选择构建项目。

我担心的是,这在我的本地电脑上工作正常,但它并没有在服务器上运行。我担心我会将其作为一个特定的架构问题进行跟踪,也许这是一些安全设置或者我不知道的东西。另外一条信息是此Windows 2012 Server正在AWS上运行。我已经发布了下面的代码块,发生了这种情况。谢谢大家!

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

1 个答案:

答案 0 :(得分:1)

这是因为NewtonSoft Json.net lib引用是与AutomatedTester BrowserserMob包装器一起提供的x32版本,而我的盒子是x64。我删除了对x92版本的newtonsoft的引用,并添加了Nuget newtonsoft包/ reference。一旦我这样做,我终于能够打开命令窗口并运行browsermob代理。然后我遇到了一个小问题,MSTest只运行为x32,我猜它是应该工作的方式。所以在Jenkins中我设置了VSTest Runner插件并运行测试,现在一切正常。希望有一天能帮助别人。