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知识有限,所以我可能会弄错