2017-04-20 131 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代碼中,控制器被釋放,程序執行停止。

這裏是可達DiaryQuestions行動:

[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事件查看器中拋出。此外,直到RedirectToAction調用 - 輸入參數和變量全部正確填充之前,一切看起來都不錯。

我不知道在這一點上會發生什麼。 :(

+0

你可以調試一步代碼,看看它正在採取哪個路徑?我不確定它如何不能返回價值。 – Andy

+0

我描述的行爲恰恰是我在遍歷代碼時發生的情況。更具體地說,在它碰到其中一條RedirectToAction行之後,它將移動到當前行爲的結尾大括號,然後直接移動到Castle Windsor代碼中,在那裏釋放控制器並停止執行。 – SomeDevTesting123

+0

對不起,我沒有正確閱讀。我很可能是錯的,但我不認爲這是一個Twilio問題,但更多的是.net mvc問題。我想當你調用RedirectToAction時會發生什麼,它會導致瀏覽器執行一個301重定向,它將結束當前的執行路徑。儘管如此,我的.net mvc知識有限,但我可能會誤解 – Andy

回答

1

Twilio開發佈道者這裏。

我相信安迪或許是對他的意見。因爲你是返回一個重定向,這將發送301響應Twilio,我不能輕易發現是否文檔Twilio如下那些重定向,但我想在這種情況下,這不是假設。

我的代碼從兩個額外的行動,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); 
    } 

讓我知道這是否有幫助。

相關問題