2016-02-12 1 views
1

Я создал небольшое приложение в .NET C#, которое позволяет отправлять письма рабочим, используя их идентификатор рабочего лица. Я отправил электронное письмо на свой личный идентификатор рабочего лица, и он отлично работал, когда у меня установлена ​​конечная точка службы https://mechanicalturk.sandbox.amazonaws.com?Service=AWSMechanicalTurkRequester в файле App.config.Метод AWS Turk NotifyWorker, не работающий с .NET SDK при переключении с песочницы на производство

Однако, когда я переключаю конечную точку обслуживания на https://mechanicalturk.amazonaws.com?Service=AWSMechanicalTurkRequester, письмо не приходит.

Он также не кажется, что метод NotifyWorker имеет какой-либо метод ответа в SDK, как в обычном запросе URI в форме ответа XML, поэтому его довольно неприятно отлаживать.

Есть ли у кого-нибудь идеи, почему при переключении конечной точки службы сообщение никогда не появляется?

(Запрошенный Edit) Вот код, который запускает основную функцию:

public class WorkerArgs 
    { 
     public string FileName { get; set; } 
     public bool Mass { get; set; } 
     public string WorkerID { get; set; } 
     public string Message { get; set; } 
     public string Subject { get; set; } 
     public WorkerArgs(string fileName, bool mass, string message, string subject) 
     { 
      this.FileName = fileName; 
      this.Mass = mass; 
      this.Message = message; 
      this.Subject = subject; 
     } 
     public WorkerArgs(bool mass, string workerId, string message, string subject) 
     { 
      this.Mass = mass; 
      this.WorkerID = workerId; 
      this.Message = message; 
      this.Subject = subject; 
     } 
    } 
private void bwRun_DoWork(object sender, DoWorkEventArgs e) 
    { 
     WorkerArgs args = (WorkerArgs)e.Argument; 
     if (args.Mass) 
     { 
      List<string> workers = CSVProcessor.GetUniqueWorkers(args.FileName); 
      for (int i = 0; i < workers.Count(); i += 100) { 
       MessageSender.SendMessage(args.Subject, args.Message, workers.Skip(i).Take(100).ToList()); 
      } 
     } 
     else 
     { 
      MessageSender.SendMessage(args.Subject, args.Message,new List<string>(new string[] { args.WorkerID })); 
     } 

    } 

class CSVProcessor 
{ 
    public static List<string> GetUniqueWorkers(string fileName) 
    { 
     //WorkerCollection workers = new WorkerCollection(); 

     List<string> workers = new List<string>(); 

     using (TextFieldParser tfp = new TextFieldParser(fileName)) 
     { 
      tfp.Delimiters = new string[] { "," }; 
      tfp.ReadFields(); 
      while (!tfp.EndOfData) 
      { 
       string[] values = tfp.ReadFields(); 
       if (!String.IsNullOrWhiteSpace(values[21])) { workers.Add(values[15]); } //{ workers.addUniqueWorker(values[15]); } 

      } 
     } 

     return workers.Distinct().ToList(); 
    } 
} 

class MessageSender 
{ 
    public static void SendMessage(string subject, string messageText, List<string> workerIDs) { 
     SimpleClient client = new SimpleClient(); 
     client.NotifyWorkers(subject, messageText, workerIDs); 
    } 

} 
+0

WinForms или WPF? Пожалуйста, отправьте код, который отправит вашу электронную почту. – StepUp

+0

WinForms, я разделил его на несколько классов. Позвольте мне попытаться сломать это в редактировании – JSArrakis

ответ

1

Разобрался вопрос. Туры Amazon только позволяют вам NotifyWorkers для работников, которые завершили HIT для вас. Поскольку люди, с которыми я отправляю сообщения, не заполняли HIT для меня, и единственным успешным человеком был мой собственный идентификатор работника в песочнице (где я закончил некоторые из моих собственных HIT), что является причиной отсутствия сообщений.