本地VS调试过程中用Selenium WebDriver打开FF浏览器可以正常工作,项目部署至IIS后请求调用浏览器一直提示超时,异常如下:
因为本地调试可以成功,首先排除组件版本问题和浏览器兼容问题,可以大概确定的错误方向是IIS和IIS Express版本之间的权限区别。
查阅资料得知,IIS程序池中的高级设置里面有进程模型的菜单,其中标识属性解释是这样的:配置应用程序池以作为内置账户或特定的用户标识运行,内置账户也就是应用程序池标识(推荐)、网络服务、本地系统、本地服务。
我们重点要研究的是ApplicationPoolIdentify这个标识。win7的官方帮助上是这么说的:ApplicationPoolIdentity – 默认情况下,选择“应用程序池标识”帐户。启动应用程序池时动态创建“应用程序池标识”帐户,因此,此帐户对于您的应用程序来说是最安全的。
也就是说"ApplicationPoolIdentity"帐号是系统动态创建的“虚拟”帐号(说它是虚拟的,是因为在用户管理里看不到该用户或用户组,在命令行下输入net user也无法显示,但该帐号又是确实存在的)。因为此标识对应用程序来说是安全的,我们在调用FF浏览器的时候因为权限不足导致无法正常工作。所以我们需要的是新建一个账户并给权限以完成浏览器调用,我这里方便测试给的是Administrator权限,完成添加后,组件正常工作。