Routes RedirectToAction将传递到当前操作的末尾,但不会执行任何操作
以下是成功命中的控制器路由:Routes RedirectToAction将传递到当前操作的末尾,但不会执行任何操作,routes,twilio,castle-windsor,asp.net-mvc-5.2,Routes,Twilio,Castle Windsor,Asp.net Mvc 5.2,以下是成功命中的控制器路由: [Route("begin")] public ActionResult BeginSmsMessaging(SmsRequest message) { string from = message.From; var phoneNumber = from.Replace("+1", "").FormatPhoneNumber(); _commandPi
[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(“日记问题”)和RedirectToAction(“未知代码”)均未成功重定向。相反,执行移动到当前BeginsMSMessage操作的末尾,然后滑入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);
}
以及无法访问的未知代码操作:
[Route("unknownCode")]
public ActionResult UnknownCode(SmsRequest message)
{
var response = new TwilioResponse();
response.Sms("What to say...");
return TwiML(response);
}
控制台或Windows事件查看器中都不会引发错误。此外,在RedirectToAction调用输入参数和变量都正确填充之前,一切看起来都很好
我现在不知道会发生什么事(这里是Twilio开发者福音传道者 我相信Andy的评论可能是对的。因为你返回了一个重定向,这将向Twilio发送一个301响应。我很难找到Twilio是否遵循这些重定向的文档,但我假设在这种情况下不是这样 我将把你的两个额外动作,
diaryQuestions
和unknownCode
中的代码移到原来的动作,并从那里直接返回
比如:
[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);
}
让我知道这是否有帮助。您可以调试代码并查看它所采用的路径吗?我不确定它如何无法返回值。我描述的行为正是我单步执行代码时发生的情况。更具体地说,在它点击其中一个RedirectToAction行后,它会移动到当前操作,然后直接进入Castle Windsor代码,在该代码中释放控制器并停止执行。很抱歉,我没有正确阅读它。我很可能是错的,但我认为这不是Twilio问题,而是.net mvc问题。我认为调用RedirectToAction时会发生什么,它会导致浏览器执行301红色这将结束当前的执行路径。我的.NETMVC知识有限,所以我可能会弄错