设为首页 收藏本站
查看: 761|回复: 0

[经验分享] SharePoint 2010 自定义Timer job 问题总结(拒绝访问,Execute方法不执行,不及时更新)

[复制链接]

尚未签到

发表于 2015-9-25 11:25:07 | 显示全部楼层 |阅读模式
  http://www.cnblogs.com/sygwin/archive/2011/12/23/2299640.html
  在上面的链接中,我写了关于如何自定义一个简单的Timer job。这个是在我自己电脑里完成的,一切都很顺利。可是到客户这里就不行了。
  在feature的激活事件里,调用update()时提示拒绝访问。即使我使用SPSecurity.RunWithElevatedPrivileges提升权限也不行。经过google总结如下:
  首先,要正确理解SPSecurity.RunWithElevatedPrivileges提升的权限是什么。在sharepoint 2010 提供了两种类型数据库,一种是内容数据库(Content Database),一种是配置数据库,默认名字应该叫Sharepoint_Config。
  内容数据库,顾名思义,就是存放sharepoint中的内容的,比如列表数据,上传的文档等。配置数据库就是存放全局配置的,它在安装sharepoint的时候生成,而且就一个。
  SPSecurity.RunWithElevatedPrivileges提示的权限指的是往内容数据库写数据的权限。比如,当你更新或添加列表项时,提示拒绝访问,使用该功能提升权限基本都可以解决。但是配置数据库的写入权限则不是该方法可以提升的。而计时器(Timer Job)则需要在配置数据库里写入数据,它也就无能为力了。
  对于配置数据的对应的级别是场或应用程序,而内容数据库对应的是网站集或网站。换句话说,最好将timer job对应的feature注册范围设置为场或应用程序级别,这么做可能会解决您的问题。Kaneboy回答我的问题时,曾说说网站集级别的feature事件接收器无法注册计时器。我想就是这个原因。
  而我的计时器注册范围是网站集,而且我试图将其设置或场或应用程序级别,仍然不行。那么我只要保持网站集级别的部署范围,然后想办法提示权限了。
  经查证:1.在配置数据库里写入数据,需要数据库账号拥有wss_content_application_pools角色,参考:http://www.sharepointsecurity.com/sharepoint/sharepoint-security/fixing-access-denied-errors-with-sharepoint-2010-timer-jobs/
  2.还有人建议说将我的应用程序池和管理中心应用程序池账号设为一致,这个方法不适合我,毕竟是在客户环境中,这个是下下策。
  微软的一篇文章提到这样的问题,好像是建议用stsadm来部署和激活feature,这个我觉得也不好,有兴趣的可以参考:
  http://msdn.microsoft.com/zh-cn/library/cc427068.aspx
  3.在微软网站上,还有另外一个解决办法,这个我试了一下完全可以。
  可参考http://support.microsoft.com/kb/2564009
  4.也是我采用的方法,很简单。在继承SPJobDefinition的类中,重写HasAdditionalUpdateAccess()方法,如下:
  protected override bool HasAdditionalUpdateAccess()
        {
            return true;
        }
  第二个问题,就是计时器的Execute方法不执行。这个原因很简单,就是对于的计时器服务没有启动。可以再命令提示符里输入:
  net start sptimerv4
  如图提示,无法启动,那就需要进入:开始--管理工具--服务 找到SharePoint 2010 Timer,在登录选项卡中更改账户,重新启动了。
  参考http://technet.microsoft.com/en-us/library/ff182790.aspx
  第三个问题,更新计时器后,重新部署,执行结果并不是最新的。这个也简单,重启一下IIS,如果还不行,就重启sptimerv4
  
  参考代码:http://files.cnblogs.com/sygwin/DocLibStatistics.rar  仅供参考,切勿硬套。
  更多参考:
  http://dotnetfinder.wordpress.com/2010/07/24/creatingcustomsharepointtimerjob2010/
http://www.andrewconnell.com/blog/articles/CreatingCustomSharePointTimerJobs.aspx
http://social.msdn.microsoft.com/Forums/en/sharepointdevelopment/thread/696a640f-4b8d-44ce-a970-e05bd45c437f
http://social.technet.microsoft.com/Forums/lv-LV/sharepoint2010programming/thread/554f0878-51cc-4caa-9812-82260a5afcd9
http://www.sharepointblues.com/2010/10/22/custom-spjobdefinition-and-access-denied-error/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-118625-1-1.html 上篇帖子: SharePoint 2010文档库批量下载文档的实现 下篇帖子: Sharepoint 2007中电子邮件的应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表