SharePoint 2007 管理中心TimerJob”计时器作业定义”页面报错
部署完成自己开发的TimerJob,发现“计时器作业定义”页面报错,进不去了,但是TimerJob可以正常运行,这样,肯定不行的,估计还是代码有问题,把这个脆弱的sharepoint页面搞死了。
如下图,http://URL/_admin/ServiceJobDefinitions.aspx未知错误,最烦人了,而且改了web.config也不抛
冷静下来,想了一下,可能有问题的几个点:
1、配置文件格式问题,删了配置文件,依然报错,而且格式有问题,基本上Timer服务起不来。
2、读取配置文件有问题,但是程序是控制台调好的,不应该。
3、本身有问题,这个先不靠谱,因为没改过,不应该。
4、代码本身有问题。
所以,查看日志,sharepoint日志和windows应用程序日志
查看windows应用程序日志,发现:
很明显,代码有问题,造成的问题。
注释掉excute函数里面的所有东西,重新部署TimerJob,居然依然报错;所以,一狠心,把所有我写的代码,都注释掉了,OK了;一部分一部分注释,看看哪部分出问题了。最后,发现
public static string SubHttpUrl = ConfigurationManager.AppSettings["SubHttpUrl"].ToString();
public static string WebService = ConfigurationManager.AppSettings["WebService"].ToString();
这两个变量声明有问题,放到方法里面,不用public static就可以了。如下:
string SubHttpUrl = ConfigurationManager.AppSettings["SubHttpUrl"].ToString();
string WebService = ConfigurationManager.AppSettings["WebService"].ToString();
查看一下:使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。static 修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型,可能TimerJob不支持这样的声明,造成错误了,不像控制台程序。因为TimerJob调试起来不十分方便,所以基本都是从控制台中调试OK了,才改成TimerJob的,好吧,问题解决了,OK。挺简单的问题,挺简单的思路,记录一下,也给大家多个参考。
修改OK以后截图。
博文推荐: |
SharePoint 2013 WebPart 管理工具分享[开源] |
基于SharePoint 2013的论坛解决方案[开源] |
SharePoint 2013 学习基础系列入门教程 |
SharePoint 2013 图文开发系列之门教程 |
SharePoint Designer 学习系列入门教程 |
特:如果有SharePoint项目,欢迎邮件联系我,Email:linyu_s@163.com |