使用重定向来启动应用程序,并且仍然停留在asp.net中的同一页面中

using a redirect to launch an app and still stay in same page in asp.net

本文关键字:net 停留在 asp 一页 重定向 启动 应用程序      更新时间:2023-09-26

我写了一个使用银行身份验证的网站,我不知道这在瑞典以外有多常见,但基本上它要么是手机中的应用程序,要么是windows中的本地软件。要在windows中启动应用程序,需要进行如下重定向:

if (startLocalApp)
            {
                Response.Redirect("bankid:///?autostarttoken=" + AuthResp.AuthenticateResponse1.AutoStartToken + "&redirect=" + Request.Url.AbsoluteUri);
            }

但问题是,软件的重定向并没有按照我需要的方式工作,因为重定向确实会打开一个新的选项卡,其中包含我需要在新选项卡中返回的网页,而会话变量则完全混乱。所以我需要做的是相反的,在一个新的选项卡中启动应用程序,并让它在完成后关闭选项卡,因为在我启动应用程序之前,我已经拥有了所需的所有引用,它甚至不需要在同一个浏览器窗口中执行。

那么如何在另一个选项卡中进行重定向,重定向后是否可以继续执行代码呢?如果没有,我需要写一篇文章,继续执行后面的代码。

编辑:我尝试过一种解决方案,感觉我离它越来越近了,但我还没有完全达到。前端:

<script type="text/javascript">
    function StartBankIdApp(){
        var _url = 'bankid:///?autostarttoken=<%= (AuthResp == null || AuthResp.AuthenticateResponse1 == null) ? "null" : AuthResp.AuthenticateResponse1.AutoStartToken %>&redirect=null';
        var $irWin = window.open(_url, '_blank');
        if ($irWin != null) {
            $irWin.close();
        }
    }
</script>

代码背后:

if (startLocalApp)
{
    ScriptManager.RegisterStartupScript(this, this.GetType(), StartBankIdApp", "StartBankIdApp()", true);
}

该应用程序没有启动,即它应该打开的窗口没有打开。我做错什么了吗?

我认为您正在尝试使用"URL方案"来启动应用程序。并且你希望应用程序应该在一个新的选项卡(或窗口)中触发。

这可以通过javascript实现。要打开新选项卡中的任何链接,我们可以使用window.open并将目标属性设置为_blank。这是的样本代码

var _url = 'app:MyApp?queryString=somestring';
var $irWin = window.open(_url, '_blank');
if ($irWin != null) {
   $irWin.close();
}

我在这里所做的是,在启动应用程序后,我关闭了新的选项卡(或窗口)。

javaScript代码将继续运行(也就是说,它不会等待应用程序完成该过程)。