2017-04-20 13 views
0

を行かない、正常にヒットされているコントローラのルートです:RedirectToActionは、現在のアクションの最後に渡し、ここではどこにも

[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"); 
     } 
    } 

RedirectToAction(「DiaryQuestions」)もRedirectToAction(「UnknownCode」)のいずれもが正常にリダイレクトされます。代わりに、実行は現在のBeginSmsMessagingアクションの最後に移動し、コントローラが解放されてプログラムの実行が停止するIoCコードに移動します。

[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); 
    } 

そして、到達不能UnknownCodeアクション:

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

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

     return TwiML(response); 
    } 

エラーがコンソールまたはWindowsのイベントビューアのいずれかでスローされていない

はここで到達不能DiaryQuestionsアクションです。また、RedirectToAction呼び出しの入力パラメータと変数がすべて正しく設定されるまで、すべてがうまくいくように見えます。

私はこの時点で何が起こっているのか分かりません。 :(ここ

+0

コードをステップバイステップでデバッグし、どのパスを使用しているか確認できますか?どのように値を返すことができなかったのか分かりません。 – Andy

+0

私が記述した振舞いは、コードをステップ実行したときの動作です。具体的には、RedirectToAction行の1つにヒットした後、現在のアクションの末尾のブレースに移動し、コントローラが解放されて実行が停止するCastle Windsorコードに直接移動します。 – SomeDevTesting123

+0

申し訳ありませんが正しく読まなかった。私は間違っているかもしれませんが、これはTwilioの問題ではなく、.net mvcの問題だと思います。 RedirectToActionを呼び出すと何が起きているのかと思います。ブラウザが301のリダイレクトを行い、現在の実行パスを終了させます。私の.net mvcの知識は限られているので、私は間違っている可能性があります – Andy

答えて

1

Twilioの開発者エバンジェリスト。

私はアンディは彼のコメントにはおそらく正しいと信じています。あなたがリダイレクトを戻ってきているので、これはTwilioに301応答を送信します。私は簡単かどうかについてのドキュメントを見つけることができませんTwilioは、これらのリダイレクトに従うが、私はそれがないことを、この場合に想定すると思います。

を、私は、元のアクションに、あなたの2つの余分なアクション、diaryQuestionsunknownCodeからコードを移動し、そこからTwiMLストレートを返すと思います。

類似のもの:

[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 
     }); 

     var response = new TwilioResponse(); 

     int code; 
     if(int.TryParse(message.Body, out code)) 
     { 
      try 
      { 
       response.SetAttributeValue("PhoneNumber", message.From); 
       response.SetAttributeValue("DiaryQuestion", "1"); 
       response.Message("This is a test message."); 
       response.Sms("This is a test SMS"); 
      } 
      catch(Exception e) 
      { 
       string error = e.Message; 
       return null; 
      }     
     } 
     else 
     { 
      response.Sms("What to say..."); 
     } 

     return TwiML(response); 
    } 

それがまったく役に立ったら教えてください。

関連する問題