Scheduled tasks activation

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.
13 年 前
SonicImaging wrote:

I ran into the same problem with a post 180 codeplex update.   Its always worked locally but not on my shared hosting server.

I was already in integrated mode so I changed the Application pool bitness from 64 bit to 32 bit and all the emails are being sent out now

-Keith


Configured my local server the same as my web hosting:
. NET Trust Levels as MediumCustomer (web_mediumtrust_custom.config).
The Scheduler actually stopped working. I tested the latest version available on codeplex nopcommerce 1.90 The <ScheduleTasks> in web.config works just as full (internal).
Could you help me ... Help Andrei ...
13 年 前
Hosting MediumCustom (web_mediumtrust_custom.config).

I'm having problems, ScheduleTasks is not working.I made modifications to the source and was unable to work in hosting medium trust. code from the previous version 1.70 nopcommerce.
Correct me if I'm wrong.


In web.config I added this line to find the error.

<trust level="Medium" />
</system.web>

Found errors in this class: UnityPerExecutionContextLifetimeManager.cs


                      //Not in WCF or ASP.NET Environment, UnitTesting, WinForms, WPF etc.
I disabled this line  //result = CallContext.GetData(_key.ToString());

                      //Not in WCF or ASP.NET Environment, UnitTesting, WinForms, WPF etc.
I disabled this line  //CallContext.SetData(_key.ToString(), newValue);


The work ScheduleTask :) , e-mail was not marked as sent, causing a loop over the items :(.

I was then fetch the code on codeplex nopcommerce older. UpdateQueuedEmail:

//-----------------------------------------------------------------------------//

in MessageService.cs

        /// <summary>
        /// Updates a queued email
        /// </summary>
        /// <param name="queuedEmailId">Email item identifier</param>
        /// <param name="priority">The priority</param>
        /// <param name="from">From</param>
        /// <param name="fromName">From name</param>
        /// <param name="to">To</param>
        /// <param name="toName">To name</param>
        /// <param name="cc">Cc</param>
        /// <param name="bcc">Bcc</param>
        /// <param name="subject">Subject</param>
        /// <param name="body">Body</param>
        /// <param name="createdOn">The date and time of item creation</param>
        /// <param name="sendTries">The send tries</param>
        /// <param name="sentOn">The sent date and time. Null if email is not sent yet</param>
        /// <returns>Queued email</returns>
        public QueuedEmail UpdateQueuedEmail(int queuedEmailId,
            int priority, string from,
            string fromName, string to, string toName, string cc, string bcc,
            string subject, string body, DateTime createdOn, int sendTries,
            DateTime? sentOn, int emailAccountId)
        {
            from = CommonHelper.EnsureMaximumLength(from, 500);
            fromName = CommonHelper.EnsureMaximumLength(fromName, 500);
            to = CommonHelper.EnsureMaximumLength(to, 500);
            toName = CommonHelper.EnsureMaximumLength(toName, 500);
            cc = CommonHelper.EnsureMaximumLength(cc, 500);
            bcc = CommonHelper.EnsureMaximumLength(bcc, 500);
            subject = CommonHelper.EnsureMaximumLength(subject, 500);

            var queuedEmail = GetQueuedEmailById(queuedEmailId);
            if (queuedEmail == null)
                return null;

            if (!_context.IsAttached(queuedEmail))
                _context.QueuedEmails.Attach(queuedEmail);

            queuedEmail.Priority = priority;
            queuedEmail.From = from;
            queuedEmail.FromName = fromName;
            queuedEmail.To = to;
            queuedEmail.ToName = toName;
            queuedEmail.CC = cc;
            queuedEmail.Bcc = bcc;
            queuedEmail.Subject = subject;
            queuedEmail.Body = body;
            queuedEmail.CreatedOn = createdOn;
            queuedEmail.SendTries = sendTries;
            queuedEmail.SentOn = sentOn;
            queuedEmail.EmailAccountId = emailAccountId;
            _context.SaveChanges();

            return queuedEmail;
        }

//-----------------------------------------------------------------------------//

in IMessageService.cs


/// <summary>
        /// Updates a queued email
        /// </summary>
        /// <param name="queuedEmailId">Email item identifier</param>
        /// <param name="priority">The priority</param>
        /// <param name="from">From</param>
        /// <param name="fromName">From name</param>
        /// <param name="to">To</param>
        /// <param name="toName">To name</param>
        /// <param name="cc">Cc</param>
        /// <param name="bcc">Bcc</param>
        /// <param name="subject">Subject</param>
        /// <param name="body">Body</param>
        /// <param name="createdOn">The date and time of item creation</param>
        /// <param name="sendTries">The send tries</param>
        /// <param name="sentOn">The sent date and time. Null if email is not sent yet</param>
        /// <returns>Queued email</returns>
        QueuedEmail UpdateQueuedEmail(int queuedEmailId,
            int priority, string from,
            string fromName, string to, string toName, string cc, string bcc,
            string subject, string body, DateTime createdOn, int sendTries,
            DateTime? sentOn, int emailAccountId);

//-----------------------------------------------------------------------------//

in SendQueuedMessagesTask.cs

        //queuedEmail.SendTries = queuedEmail.SendTries + 1;
        //queuedEmail.SentOn = DateTime.UtcNow;
                    IoC.Resolve<IMessageService>().UpdateQueuedEmails(queuedEmail.QueuedEmailId, queuedEmail.Priority,
                        queuedEmail.From, queuedEmail.FromName, queuedEmail.To, queuedEmail.ToName,
                        queuedEmail.CC, queuedEmail.Bcc, queuedEmail.Subject, queuedEmail.Body,
                        queuedEmail.CreatedOn, ++queuedEmail.SendTries, DateTime.UtcNow,
                        queuedEmail.EmailAccountId);
                }
                catch (Exception exc)
                {
        
                    //queuedEmail.SendTries = queuedEmail.SendTries + 1;
                    IoC.Resolve<IMessageService>().UpdateQueuedEmails(queuedEmail.QueuedEmailId, queuedEmail.Priority,
                        queuedEmail.From, queuedEmail.FromName, queuedEmail.To, queuedEmail.ToName,
                        queuedEmail.CC, queuedEmail.Bcc, queuedEmail.Subject, queuedEmail.Body,
                        queuedEmail.CreatedOn, ++queuedEmail.SendTries, queuedEmail.SentOn,
                        queuedEmail.EmailAccountId);

//-----------------------------------------------------------------------------//

then remove the <trust level="Medium" />

Ok `:)  Solved my problem.
13 年 前
ricardo wrote:
snip

Look at changeset 60212 in order to get the latest version with the fix
BTW, you should not use upcoming 1.90 beta version in production environment
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.