0

マシンでデバッグしているときに、httpModule を IIS に発行した後、正常に起動するようになりました。実行されません。何が間違っていますか? 何か不足していますか?

これはweb.configでどのように見えるかです

<httpModules>
     <add type="MyApp.Web.Mvc.Modules.Scheduler" name="Scheduler" />
</httpModules>

スケジューラは次のようになります

public class Scheduler : IHttpModule
{   
private static readonly object Job;
private static Timer timer;

static Scheduler()
{
    Job = new object();
}

void IHttpModule.Init(HttpApplication application)
{
    try
    {

        if (timer == null)
        {
            var timerCallback = new TimerCallback(ProcessJobs);
            const int startTime = 10 * 1000;
            const int timerInterval = 60 * 1000; // 1 minute
            timer = new Timer(timerCallback, null, startTime, timerInterval);
        }
    }
    catch (Exception ex)
    {
        //exception code here
    } 
}

public void Dispose()
{
}

protected void ProcessJobs(object state)
{
    try
    {
        // This protects everything inside from other threads that might be invoking this
        // which is good for long running processes on the background
        lock (Job)
        {
            //My Stuff
        }
    }
    catch (Exception ex)
    {
        //exception code here
    }
}
}
4

1 に答える 1

3

IIS 7.0以降の統合パイプラインモードでホストしている場合は、<system.webServer><modules>...<modules></>セクション内でモジュールを宣言していることを確認してください。

<system.webServer>
    ....
    <modules>
        <add name="Scheduler" type="MyApp.Web.Mvc.Modules.Scheduler" />
    </modules>
</system.webServer>

ちなみに、このコードを本番環境に移行する前に、PhilHaackによるASP.NETでの繰り返しバックグラウンドタスクの実装の危険性に関する記事を必ず読んでください。

于 2012-10-17T21:09:06.000 に答える