最近做了一个模拟请求的网站简化原网站的繁琐数据,提出有用的数据简单展示并完成post.由于原网站数据有js加密,所以我抓出原网站的js解密方法,由C#调用js得到解密后的数据。
整个抓包的框架是用的苏飞的HttpHelper万能框架,执行js方法则是用框架已实现的HttpHelper.JavaScriptEval方法,码好代码,实现功能,本地调试一切正常.于是我把网站部署到IIS上,这时问题来了.
部署上IIS之后访问开始报异常,具体错误:
Exception type: COMException
Exception message: 检索 COM 类工厂中 CLSID 为 {0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。
找不到这个组件,那这个组件去哪了,我得把他找出来.
第一步:注册表寻找这个值,打开注册表,在注册表中查找{0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC} 这个值找到了这个,MSScriptControl.ScriptControl,对应的组件是msscript.ocx:
第二步:注册msscript.ocx这个组件,32位的系统在C:\Windows\System32\下面,我是64位的系统在C:\Windows\SysWOW64\下面.
以管理员身份运行Cmd 执行命令:Regsvr32 C:\Windows\SysWOW64\msscript.ocx(32为系统路径用C:\Windows\System32\msscript.ocx)
注意一定要用管理员身份运行Cmd,否则DLLRegitsterServier会没有执行权限.注册成功结果:
完成以上两个步骤之后,恢复正常.
遇到这种只能编译成x86的组件,那么就必须将 生成 目标平台 设置成 x86
参考文章: