を行かない、正常にヒットされているコントローラのルートです: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呼び出しの入力パラメータと変数がすべて正しく設定されるまで、すべてがうまくいくように見えます。
私はこの時点で何が起こっているのか分かりません。 :(ここ
コードをステップバイステップでデバッグし、どのパスを使用しているか確認できますか?どのように値を返すことができなかったのか分かりません。 – Andy
私が記述した振舞いは、コードをステップ実行したときの動作です。具体的には、RedirectToAction行の1つにヒットした後、現在のアクションの末尾のブレースに移動し、コントローラが解放されて実行が停止するCastle Windsorコードに直接移動します。 – SomeDevTesting123
申し訳ありませんが正しく読まなかった。私は間違っているかもしれませんが、これはTwilioの問題ではなく、.net mvcの問題だと思います。 RedirectToActionを呼び出すと何が起きているのかと思います。ブラウザが301のリダイレクトを行い、現在の実行パスを終了させます。私の.net mvcの知識は限られているので、私は間違っている可能性があります – Andy