首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  .NET

.net 页面跳转报正在中止线程错误

  •  
  •   zarte · 96 天前 · 644 次点击
    这是一个创建于 96 天前的主题,其中的信息可能已经有所发展或是发生改变。

    判断用户是否登录,使用 HttpContext.Current.Response.Redirect 跳转到登录页面,会抛出异常。百度的结果是 Response.End 导致。
    解决办法是使用 Response.Redirect ( url,bool )方法但是!!会继续执行之后的代码,还有说加 HttpContext.Current.ApplicationInstance.CompleteRequest 的也一样会执行之后的代码。
    .net 就没有这种跳转需求吗?结束之后的代码不抛异常的?

    5 回复  |  直到 2019-07-12 15:23:10 +08:00
        1
    Rwing   96 天前
    return?
        2
    arrow8899   96 天前
    重定向是客户端做的事啊,Response.Redirect 只是给客户端返了个 302,服务端的逻辑可以继续执行,你不想继续执行就 return。
        3
    zarte   96 天前
    @arrow8899 问题是封装了个跳转的方法,return 后主方法之后的还是会执行。
        4
    zarte   96 天前
    @Rwing Page_Load 里调用别的方法,别的方法使用了跳转,return 就没用了。
        5
    yulitian888   96 天前   ♥ 1
    因为没有结束请求的响应过程,加上 CompleteRequest 就好了
    我写的一个扩展方法,直接引用了就可以用 response 实例.RedirectTo("地址")来跳了

    public static class HttpRedirect
    {
    public static void RedirectTo(this HttpResponse response, string url)
    {
    if (response.IsRequestBeingRedirected)
    {
    return;
    }

    response.Redirect(url, false);
    var context = HttpContext.Current;
    if (context != null)
    {
    context.ApplicationInstance.CompleteRequest();
    }
    }
    }
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4314 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 08:39 · PVG 16:39 · LAX 01:39 · JFK 04:39
    ♥ Do have faith in what you're doing.