2017-04-20 2 views
0

Voici la route du contrôleur qui est frappé avec succès:RedirectToAction passe à la fin de l'action en cours et ne va nulle part

[Route("begin")] 
    public ActionResult BeginSmsMessaging(SmsRequest message) 
    {    
     string from = message.From; 

     var phoneNumber = from.Replace("+1", "").FormatPhoneNumber();    

     _commandPipeline.Publish(new LogInboundMessage 
     { 
      PhoneNumber = phoneNumber, 
      TimestampUtc = DateTime.UtcNow 
     }); 

     int code; 
     if(int.TryParse(message.Body, out code)) 
     { 
      try 
      { 
       return RedirectToAction("DiaryQuestions"); 
      } 
      catch(Exception e) 
      { 
       string error = e.Message; 
       return null; 
      }     
     } 
     else 
     { 
      return RedirectToAction("UnknownCode"); 
     } 
    } 

Ni le RedirectToAction (« DiaryQuestions ») ni le RedirectToAction (« UnknownCode ») réorientent avec succès . Au lieu de cela, l'exécution passe à la fin de l'action BeginSmsMessaging en cours, puis se glisse dans le code IoC où le contrôleur est libéré et l'exécution du programme s'arrête.

Voici l'action DiaryQuestions injoignable:

[Route("diaryQuestions")] 
    public ActionResult DiaryQuestions(SmsRequest message) 
    { 
     var response = new TwilioResponse(); 
     response.SetAttributeValue("PhoneNumber", message.From); 
     response.SetAttributeValue("DiaryQuestion", "1"); 
     response.Message("This is a test message."); 
     response.Sms("This is a test SMS"); 
     return TwiML(response); 
    } 

Et l'action UnknownCode injoignable:

[Route("unknownCode")] 
    public ActionResult UnknownCode(SmsRequest message) 
    { 
     var response = new TwilioResponse(); 

     response.Sms("What to say..."); 

     return TwiML(response); 
    } 

Aucune erreur ne sont jetés dans la console ou Observateur d'événements Windows. En outre, tout semble bon jusqu'à l'appel RedirectToAction - les paramètres d'entrée et les variables sont tous remplis correctement.

Je n'ai aucune idée à ce stade de ce qui pourrait se passer. :(

+0

Pouvez-vous déboguer le code étape par étape et voir quel chemin il prend? Je ne suis pas sûr de savoir comment il ne pouvait pas retourner une valeur. – Andy

+0

Le comportement que j'ai décrit est exactement ce qui se passe lorsque je parcours le code. Pour être plus précis, après avoir atteint l'une des lignes RedirectToAction, il se déplace ensuite vers l'accolade de fin de l'action en cours, puis se déplace directement dans le code Castle Windsor où le contrôleur est relâché et l'exécution s'arrête. – SomeDevTesting123

+0

Désolé je ne l'ai pas lu correctement. Je peux très bien me tromper mais je ne pense pas que ce soit un problème Twilio mais plus d'un problème de .net mvc. Je pense que ce qui se passe quand vous appelez RedirectToAction, il fait que le navigateur fasse une redirection 301 qui mettrait fin au chemin d'exécution actuel. Mes connaissances .net mvc est limitée bien que je puisse me tromper – Andy

Répondre

1

Twilio évangéliste développeur ici.

Je crois que Andy est probablement raison dans ses commentaires. Parce que vous retournez une redirection, ce qui enverra une réponse à 301 Twilio. Je ne trouve pas facilement la documentation si Twilio suit les réoriente, mais je suppose dans ce cas que ce n'est pas.

Je passerions le code de vos deux actions supplémentaires, diaryQuestions et unknownCode, à l'action initiale et le retour de la droite de TwiML là.

Quelque chose comme:Faites-moi savoir si cela aide du tout.