1

我有一台安装了 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;             
}
4

1 回答 1

1

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

于 2014-01-27T13:08:07.227 回答