Похоже, не удалось заставить Quartz .Net работать над VB.Net Проект веб-приложения

#asp.net #vb.net #quartz.net

#asp.net #vb.net #quartz.net

Вопрос:

Я до конца следовал руководству Quartz и все еще не уверен, почему он не запускает GetDeal.vb (задание Quartz) в Global.asax. Это так и не вошло в _scheduler.JobGroupNames и _scheduler.TriggerGroupNames выполняет цикл следующим образом:

 Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)

    Dim factory As ISchedulerFactory = New StdSchedulerFactory()
    _scheduler = factory.GetScheduler()
    _scheduler.Start()

    If _scheduler.IsStarted Then
        Dim jobs As String = ""
        Dim jobGroup As String = ""
        For Each jobGroup In _scheduler.JobGroupNames
            Dim jobName As String
            For Each jobName In _scheduler.GetJobNames(jobGroup)
                jobs = jobs   " "   jobName
            Next
        Next

        jobs = ""
        For Each jobGroup In _scheduler.TriggerGroupNames
            Dim jobName As String
            For Each jobName In _scheduler.GetTriggerNames(jobGroup)
                jobs = jobs   " "   jobName
            Next
        Next
    End If

End Sub
  

Я прикрепил ссылку для загрузки моего проекта здесь. Есть какие-либо советы о том, как заставить это работать?
http://www.uniquevolve.com/YouMeCoupon.zip

Ответ №1:

Измените пространство имен вашей работы таким образом: Namespace Jobs

Это полный файл:

 Imports Quartz

' Namespace YouMeCoupon.Jobs
Namespace Jobs

Public Class GetDeal : Implements Quartz.IJob


    Public Sub Execute(ByVal context As Quartz.JobExecutionContext) Implements Quartz.IJob.Execute
        Dim data As JobDataMap = context.MergedJobDataMap
        'Dim url As String = data.GetString("URL")

        Try
            Dim a As String
            a = "testing"

        Catch ex As Exception

        End Try

    End Sub
End Class

End Namespace
  

Я бы посоветовал вам использовать систему ведения журнала для отладки Quartz.net.
У вас должны быть эти ссылки:

Обычный.Ведение журнала.Распространенная библиотека dll.Logging.NLog.dll NLog.dll

Затем вы можете добавить файл конфигурации для NLog (NLog.config)

 <?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
    <targets>
        <target name="DebugHandler" type="File" filename="${basedir}/_Logs/${date:format=yyyyMMdd}_${level}.Log"
            layout="${longdate} ${logger}   ${aspnet-session:variable=UserName} ${threadid} ${environment}  ${identity} ${aspnet-request}   ${message}  ${exception}" />
        <target name="ErrorHandler" type="File" filename="${basedir}/_Logs/${date:format=yyyyMMdd}_${level}.Log"
            layout="${longdate} ${logger}   ${aspnet-session:variable=UserName} ${threadid} ${environment}  ${aspnet-request}   ${message}  ${exception}" />
        <target name="FatalHandler" type="File" filename="${basedir}/_Logs/${date:format=yyyyMMdd}_${level}.Log"
            layout="${longdate} ${logger}   ${aspnet-session:variable=UserName} ${threadid} ${environment}  ${aspnet-request}   ${message}  ${exception}" />
        <target name="GenericHandler" type="File" filename="${basedir}/_Logs/${date:format=yyyyMMdd}_${level}.Log"
            layout="${longdate} ${logger}   ${aspnet-session:variable=UserName} ${threadid} ${environment}  ${aspnet-request}   ${message}  ${exception}" />
    </targets>
    <rules>
        <logger name="*" level="Debug" appendTo="DebugHandler" />
        <logger name="*" level="Error" appendTo="ErrorHandler" />
        <logger name="*" level="Fatal" appendTo="FatalHandler" />
        <logger name="*" levels="Info,Warn" appendTo="GenericHandler" />
    </rules>
</nlog>
  

и измените свой web.config, добавив эти разделы:

 <sectionGroup name="common">
  <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/>
</sectionGroup>
  

и

   <common>
    <logging>
      <factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog">
        <arg key="configType" value="FILE" />
        <arg key="configFile" value="~/NLog.config" />
      </factoryAdapter>
    </logging>
  </common>
  

Теперь все должно быть отслежено в ваших _LOG (которые вы должны добавить в свой проект). Вам легче понять, что происходит.
Вы можете найти свои обновленные решения с помощью регистрации здесь.
Проверьте также Quartz.net версия. Мне кажется, что вы не используете последний: 1.3.

Комментарии:

1. Изменение пространства имен с YouMeCoupon. Jobs to Jobs выполнили свою работу. Вы, сэр Лефтикс, потрясающий! Спасибо, что показали мне, как выполняется ведение журнала. До этого я понятия не имел, как записывать в журнал. 🙂

2. Ведение журнала очень важно. Вот как я нашел вашу проблему 😉