SharePoint 2007 管理中心TimerJob”计时器作业定义”页面报错

部署完成自己开发的TimerJob,发现“计时器作业定义”页面报错,进不去了,但是TimerJob可以正常运行,这样,肯定不行的,估计还是代码有问题,把这个脆弱的sharepoint页面搞死了。

如下图,http://URL/_admin/ServiceJobDefinitions.aspx未知错误,最烦人了,而且改了web.config也不抛

clip_image002

冷静下来,想了一下,可能有问题的几个点:

1、配置文件格式问题,删了配置文件,依然报错,而且格式有问题,基本上Timer服务起不来。

2、读取配置文件有问题,但是程序是控制台调好的,不应该。

3、本身有问题,这个先不靠谱,因为没改过,不应该。

4、代码本身有问题。

所以,查看日志,sharepoint日志和windows应用程序日志

查看windows应用程序日志,发现:

clip_image003

很明显,代码有问题,造成的问题。

注释掉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。挺简单的问题,挺简单的思路,记录一下,也给大家多个参考。

clip_image005

修改OK以后截图。

posted @ 2013-01-08 21:35 霖雨 阅读(...) 评论(...) 编辑 收藏