【问题标题】:How to test windows service scheduler for my ASP.Net Web Application?如何为我的 ASP.Net Web 应用程序测试 Windows 服务调度程序?
【发布时间】:2012-04-27 20:26:45
【问题描述】:

我为我的网络应用创建了一个调度程序,它设置为每 3 秒触发一次。我想使用 Console.Write("bob") 来查看调度程序是否正常工作,但什么也没发生,只有在单击“调试”按钮后才创建网页。我是在测试错误的方式还是调度程序确实不起作用?

这是我写的代码:

namespace Scheduler
{
    public partial class CheckExpireService : ServiceBase
    {
        private CheckExpireJob job;
        private Timer stateTimer;
        private TimerCallback timerDelegate;


        public CheckExpireService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            job = new CheckExpireJob();
            timerDelegate = new TimerCallback(job.CheckExpireApplicants);
            stateTimer = new Timer(timerDelegate, null, 1000, 3000);
        }

        protected override void OnStop()
        {
            stateTimer.Dispose();
        }
    }
}


namespace Scheduler
{
    class CheckExpireJob: ServiceBase
    {
        public void CheckExpireApplicants(object stateObject) {
        Console.Write("bob");
        }
    }
}

提前致谢!!

【问题讨论】:

    标签: asp.net windows-services


    【解决方案1】:

    (我本来打算发表评论,但编辑和回答似乎是我唯一可用的东西。)

    首先,我认为您不能在调试模式下运行 Windows 服务...它必须作为服务编译和安装,并使用 Windows 中的服务管理器启动和停止。如果您在 Web 应用程序的某处有此代码,它将无法工作。它需要是一个单独的项目。

    其次,你不能像这样构造和调用服务。如果您想要一个按时间间隔执行某项操作的服务,您需要在该服务中拥有计时器及其所有工作。

    您无法安排网络应用程序...当有人访问该页面时它会运行。你真正需要安排什么?定期更新网络应用将从中提取的数据?

    需要更多地了解您要完成的工作才能获得帮助。

    【讨论】:

    • 嗨 KennyZ,我想更新我的数据库,每天删除过期的申请人。我将“调度程序”与我的网络应用程序项目一起创建为一个单独的项目。我希望这些信息可以帮助您更好地了解我正在尝试的二重奏
    • 好吧,我不知道这是否被认为是最佳实践,但对我来说,我会为 Windows 服务提供一个完全独立的解决方案。在尝试启动该事物之前,您还需要搜索有关安装 Windows 服务的信息。
    • 那么,写入控制台将无法解决问题。我可以建议的最简单的想法是让测试服务在您可以查看的目录中创建一个文件,例如 C:\TestFolder。然后安装并启动您的服务,打开该文件夹并观察是否正在创建文件。
    • 如您所见...这不是您正在尝试的小事。更简单的是编写一个单独的 Windows 窗体应用程序并使用 Windows 任务计划程序或类似的东西启动它。
    • 在您的帮助下,我成功安装了我的调度程序(msdn.microsoft.com/en-us/library/zt39148a(v=vs.80).aspx)。我将其作为整个解决方案中的一个项目,然后通过编写一个 txt 文件对其进行测试。谢谢你肯尼兹!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多