android需要调用webservice,然后webservic调用vb的dll,在dll中读取和编辑excel,然后直接打印excel(调用默认打印机)。
打印的关键问题在于webservice的启用账号:Local system/Network service/Local Service,
win7还有个新的账号applicationpoolidentity。
如果用applicationpoolidentity,你会发现,在本机直接测试webservice,可以打印出去,但是在android端就会提示:拒绝的权限,原因是该账号无法打开本地的应用程序excel,设置成localsystem就可以了。这时在android端就可以正常打印。
后来部署到正式服务器上之后,又出现问题,在服务器上无法打印出去,也不提示拒绝的权限,而是一直等待,后来跟踪代码发现,在执行到activesheet.printout时,卡在那里,但是为什么在本机上就不存在这个问题呢,后来发现打印机和本机是在一个网段,而服务器和打印机不在(有可能是这个原因,因为不好改ip所以不好验证,而且也实在找不到其它原因),而localsystem虽然有执行本机任何程序的权限,但是没有网络访问的权限,这也是打印时卡在哪里的原因,后来改用自定义账户(本机管理员),终于正常打印。
总结:iis应用程序池的启用的用户权限问题。后续需仔细研究相关选择,因为目前用管理员,风险较大。