這裏是正在成功擊中控制器路線: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調用 - 輸入參數和變量全部正確填充之前,一切看起來都不錯。
我不知道在這一點上會發生什麼。 :(
你可以調試一步代碼,看看它正在採取哪個路徑?我不確定它如何不能返回價值。 – Andy
我描述的行爲恰恰是我在遍歷代碼時發生的情況。更具體地說,在它碰到其中一條RedirectToAction行之後,它將移動到當前行爲的結尾大括號,然後直接移動到Castle Windsor代碼中,在那裏釋放控制器並停止執行。 – SomeDevTesting123
對不起,我沒有正確閱讀。我很可能是錯的,但我不認爲這是一個Twilio問題,但更多的是.net mvc問題。我想當你調用RedirectToAction時會發生什麼,它會導致瀏覽器執行一個301重定向,它將結束當前的執行路徑。儘管如此,我的.net mvc知識有限,但我可能會誤解 – Andy