2010-09-29 24 views
5

Tôi đang sử dụng Quartz.NET với cơ sở dữ liệu, ví dụ: ADO.NET. Vấn đề là, khi công việc của tôi được tạo ra, chúng không được lưu vào cơ sở dữ liệu chút nào. Tôi đã cấu hình mọi thứ đúng chưa? Tôi đang sử dụng SQL Server Express, và đường dẫn đến cơ sở dữ liệu của tôi là 'chris \ sqlexpress.Quartz.dbo'.ADO.NET với Quartz.NET

phần có liên quan của tập tin cấu hình:

quartz.jobStore.type = Quartz.Impl.AdoJobStore.JobStoreTX, Quartz 
quartz.jobStore.dataSource = default 
quartz.jobStore.tablePrefix = QRTZ_ 
quartz.jobStore.clustered = true 
quartz.jobStore.lockHandler.type = Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz 
quartz.jobStore.driverDelegateType = Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz 
quartz.dataSource.default.connectionString = 
Server=localhost;Database=Quartz;Trusted_Connection=True;"; 
quartz.dataSource.default.provider = SqlServer-20 
quartz.jobStore.useProperties = true 

Scheduler initilisation, bổ sung công việc:

ISchedulerFactory schedService = new StdSchedulerFactory(); 
IScheduler sched = schedService.GetScheduler(); 

JobDetail jobDetail = new JobDetail("1", "1", typeof(copyJob)); 
jobDetail.JobDataMap["initialPath"] = initpath; 
jobDetail.JobDataMap["targetPath"] = targetpath; 
jobDetail.JobDataMap["regex"] = regex; 

CronTrigger trigger = new CronTrigger("trigger1", "group1", "1", "1", TextBox4.Text); 
sched.AddJob(jobDetail, true); 
DateTime ft = sched.ScheduleJob(trigger); 
ft = TimeZoneInfo.ConvertTimeFromUtc(ft, trigger.TimeZone); 

Response.Write(string.Format("{0} has been scheduled to run at: {1} and repeat based on expression: {2}", jobDetail.FullName, ft.ToString("r"), trigger.CronExpressionString)); 

Trả lời

5

Phải, làm việc nó ra cho bất cứ ai cần sự giúp đỡ. Chuỗi kết nối của tôi là sai, và tôi đã phải mã hóa cứng thông tin máy chủ như trong ví dụ 13 trong ví dụ Quartz.NET. Đó là một khuôn khổ tuyệt vời :)

4

Tôi đã có vấn đề tương tự với điều này và phần web.config dường như bị bỏ qua trừ khi tôi mã hóa cứng các thuộc tính vì lý do nào đó. Tôi không thích điều này vì vậy cuối cùng tôi đã viết một số mã để tải các thuộc tính từ tệp web.config và đặt chúng trong lớp StdSchedulerProvider của tôi để thay thế.

//force the properties to be loaded from the web.config section 
      NameValueCollection quartzSection = (NameValueCollection)ConfigurationManager.GetSection("quartz"); 
      if (quartzSection != null) 
      { 
       var quartzProperties = quartzSection.AllKeys.SelectMany(quartzSection.GetValues, (k, v) => new { key = k, value = v }); 

       foreach (var property in quartzProperties) 
       { 
        properties.Add(property.key, property.value); 
       } 
      } 

phần web.config của tôi là như thế này:

<configSections> 
    <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" /> 
    </configSections> 

    <quartz> 
     <add key="quartz.scheduler.instanceName" value="SchedulingPOC"/> 
     <add key="quartz.scheduler.instanceId" value="SchedulingPOC"/> 

     <!-- Configure Thread Pool --> 
     <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" /> 
     <add key="quartz.threadPool.threadCount" value="10" /> 
     <add key="quartz.threadPool.threadPriority" value="Normal" /> 

     <!-- Configure Job Store --> 
     <add key="quartz.jobStore.misfireThreshold" value="60000" /> 
     <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" /> 
     <add key="quartz.jobStore.useProperties" value="true" /> 
     <add key="quartz.jobStore.dataSource" value="default" /> 
     <add key="quartz.jobStore.tablePrefix" value="QRTZ_" /> 
     <add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" /> 

     <add key="quartz.dataSource.default.connectionString" value="Server=.\SQLExpress;Database=QuartzPOC;Trusted_Connection=True;"/> 

     <add key="quartz.dataSource.default.provider" value="SqlServer-20" /> 
     </quartz> 

Quartz.net sau đó bắt đầu đăng nhập vào cơ sở dữ liệu như tôi muốn nó. Không có ý tưởng tại sao nó rất khó để có được điều này làm việc.

+0

- Thạch anh tìm kiếm phần ' 'và tải thuộc tính từ đó để không chắc chắn tại sao bạn có mã để lặp lại điều này? Một phiên bản cũ hơn có lẽ? –

Các vấn đề liên quan