Hier ist die Controller-Route, die erfolgreich getroffen wird:RedirectToAction gibt die aktuelle Aktion zu beenden und geht nirgendwo
[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");
}
}
Weder die RedirectToAction („DiaryQuestions“) noch die RedirectToAction („Unbekannte“) wird erfolgreich Umleiten . Stattdessen wird die Ausführung an das Ende der aktuellen BeginSmsMessaging-Aktion verschoben und dann in den IoC-Code verschoben, in dem der Controller freigegeben wird und die Ausführung des Programms gestoppt wird.
Hier ist die unerreichbare DiaryQuestions Aktion:
[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);
}
Und das nicht erreichbar Unbekannte Aktion:
[Route("unknownCode")]
public ActionResult UnknownCode(SmsRequest message)
{
var response = new TwilioResponse();
response.Sms("What to say...");
return TwiML(response);
}
keine Fehler entweder in der Konsole oder Windows-Ereignisanzeige geworfen werden. Außerdem sieht alles bis zum Aufruf von RedirectToAction gut aus - Eingabeparameter und Variablen sind alle korrekt ausgefüllt.
Ich habe keine Ahnung an diesem Punkt, was passieren könnte. :(
Können Sie den Code debuggen und sehen, welchen Pfad er nimmt? Ich bin mir nicht sicher, wie es keinen Wert zurückgeben könnte. – Andy
Das Verhalten, das ich beschrieben habe, ist genau das, was passiert, wenn ich den Code durchtrete. Um genauer zu sein, nachdem es eine der RedirectToAction-Zeilen erreicht hat, bewegt es sich dann zur Endstrebe der aktuellen Aktion und bewegt sich dann direkt in Castle Windsor-Code, wo der Controller freigegeben wird und die Ausführung stoppt. – SomeDevTesting123
Entschuldigung, ich habe es nicht richtig gelesen. Ich könnte sehr gut falsch liegen, aber ich denke nicht, dass dies ein Twilio-Problem ist, sondern eher ein Problem mit .net mvc. Ich denke, was passiert, wenn Sie RedirectToAction aufrufen, es bewirkt, dass der Browser eine 301-Weiterleitung ausführt, die den aktuellen Ausführungspfad beenden würde. Mein .net mvc-Wissen ist jedoch begrenzt, also könnte ich mich irren – Andy