Я работаю над приложением для опроса в Asp. Net Mvc. Я выбираю список клиентов для соответствующего опроса со своей страницы и отправляю ссылку с GuidId этим людям из контроллера. Клиент, получающий письмо, будет перенаправлен на страницу опроса, нажав кнопку в письме. Однако, поскольку отправка почты может быть несколько, я отправляю почту в фоновую задачу после сохранения guid в базе данных. Фоновый флаг состоит из нескольких методов, которые вызывают друг друга в пользовательском классе. Чтобы создать ссылку callbackUrl, я передаю UrlHelper из контроллера в конструктор класса cutom. Я создаю URL обратного вызова в пользовательском классе следующим образом.
Где я делаю ошибку? В чем причина этой ошибки? Как решить эту проблему?
Я вызываю фоновую задачу в пользовательском классе следующим образом:
new EmailOperation (new UrlHelper (this.ControllerContext.RequestContext)). SendAsyn c (body Html, surveyId);
public class EmailOperation
{
private UrlHelper _urlHelper;
public EmailOperation(UrlHelper urlHelper)
{
_urlHelper = urlHelper;
}
public Task SendAsync(string bodyHtml, int? surveyId)
{
return Task.Factory.StartNew(() => { GetData(bodyHtml, surveyId); });
}
}
void GetData(string bodyHtml, int? surveyId)
{
...
SendEmail(bodyHtml, surveyCustomers);
}
private void SendEmail(string bodyHtml, List<SurveyCustomers> surveyCustomers)
{
foreach (SurveyCustomers surveyCustomer in surveyCustomers)
{
//_urlHelper is passed by my controller to this custom class
string scheme = _urlHelper.RequestContext.HttpContext.Request.Url.Scheme;
string callbackUrl = _urlHelper.Action("SubmitSurvey", "Survey", new { token }, scheme);//Error on this line
SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", Convert.ToInt32(587));
...
smtpClient.Send(msg);
}
}
Но я получаю сообщение об ошибке следующим образом;
Исключение типа 'System.ArgumentException 'произошло в System.Web.dll, но не было обработано в коде пользователя
Дополнительная информация: значение не соответствует ожидаемому диапазону.