【问题标题】:Implementing OAuth in MVC - I want to stop execution after a Response.Redirect在 MVC 中实现 OAuth - 我想在 Response.Redirect 之后停止执行
【发布时间】:2016-11-03 03:13:44
【问题描述】:

我正在实施一个 OAuth 解决方案,其中我向需要联系我的应用程序的外部系统提供端点。

系统最初调用此端点(MVC 操作方法),然后我需要执行 Response.Redirect 将用户发送回原始系统。

我需要在调用 Response.Redirect 后立即停止我的代码执行。我尝试了以下方法,但不会停止代码执行:

HttpContext.Current.Response.Redirect(url, true);
HttpContext.Current.ApplicationInstance.CompleteRequest();

我也尝试在重定向后返回 ActionResult,但这会导致错误,我认为这与我尝试重定向然后返回结果作为响应有关。

如何在 Response.Redirect 之后停止执行代码?

【问题讨论】:

    标签: c# asp.net-mvc redirect


    【解决方案1】:

    与其尝试使用HttpContext.Current.Response.Redirect(...),不如使用控制器自己的Redirect(...) 方法:

    return Redirect(url);
    

    【讨论】:

    • 谢谢,我没有在控制器中进行重定向,而是在控制器使用的标准 C# 类中进行。我认为您建议的重定向类型是“RedirectResult”类型,并且在 C# 类中似乎对我不可用。我可以从控制器外部的 C# 类返回 Redirect(url) 吗?如果有,怎么做?
    • 您可以实例化一个System.Web.Mvc.RedirectResult(在 System.Web.Mvc.dll 中找到,以防您碰巧在另一个项目中关闭),但这不会神奇地阻止您的控制器评估其他这之后的东西。如果您完全能够修改调用控制器,您将希望它能够从它调用的其他方法返回重定向操作(或其他 ActionResult)。
    猜你喜欢
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    相关资源
    最近更新 更多