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.