更改服务器IP地址并自动执行重定向

问题描述 投票:1回答:2

我创建了一个基于Web的应用程序,用户可以通过该应用程序更改服务器(托管Web应用程序的位置)IPAddress。

问题是,一旦我将IPAddress更改为新的IPAddress,Response.Redirect(“MyHome.aspx”)就不再起作用了。我也尝试将用户重定向到新更新的地址,但即使它没有做到这一点。一段时间后没有找到找到的页面消息。

例如:Web应用程序在IIS中运行时的URL是:http://192.168.0.65/WebDemo/Default.aspx在将IPAddress更改为192.168.0.66并使用Response.Redirect()方法重定向后,无法访问http://192.168.0.65

是否有任何想法来实现更改服务器的IP地址并自动重定向到新分配的IP地址的任务?

c# asp.net
2个回答
2
投票

当浏览器发送更改IP地址的请求时,将在客户端和服务器之间创建TCP会话。浏览器在该连接上等待响应。

更改服务器的IP地址会中断会话,因此服务器无法通过该链接发回数据。

在实际更改IP地址之前,您需要发送重定向。 (更好:使用javascript或元刷新等方式发送带有定时重定向的页面。)


0
投票

首先要感谢Mat的建议。我在这里发布解决方案,以帮助其他程序员面临同样的问题。

我已经解决了重定向的问题,通过更改我的页面后面的代码中的IP地址,让我们说它是http://192.168.0.160/ChangeIp.aspx然后在更改IP地址后我执行重定向到中间页面让我们将其命名为Redirector.aspx,如下面的代码所示:

    // Code presenet in button click handler og ChangeIP.aspx page
    protected void btnSaveAndRedirect_Click(object sender, EventArgs e)
    {
        this.ChangeIPAddress();

        // Pass the new IP address via Query String to the Redirector.aspx page
        Response.Redirect("Redirector.aspx?ip=" + this.txtIPAddress.Text);
    }

Redirector.aspx是一个简单的页面,其中包含一个图像以指示“重定向,请稍候......”和一个TextBox,其中包含需要进行重定向的新IP地址。这些元素的html存在于Redirector.aspx页面中,如下所示:

<body>
<form id="form1" runat="server">
<div>
    <table width="100%">
        <tr>
            <td><img src="Images/Transparent.png" alt="" /></td>
        </tr>
        <tr>
            <td><img src="Images/Transparent.png" alt="" /></td>
        </tr>
        <tr>
            <td><img src="Images/Transparent.png" alt="" /></td>
        </tr>
        <tr>
            <td><img src="Images/Transparent.png" alt="" /></td>
        </tr>
        <tr>
            <td><img src="Images/Transparent.png" alt="" /></td>
        </tr>
        <tr>
            <td><img src="Images/Transparent.png" alt="" /></td>
        </tr>
        <tr>
            <td><img src="Images/Transparent.png" alt="" /></td>
        </tr>
        <tr>
            <td class="style1"><img src="Images/Transparent.png" alt="" /></td>
        </tr>
        <tr>
            <td><img src="Images/Transparent.png" alt="" /></td>
        </tr>
        <tr>
            <td><img src="Images/Transparent.png" alt="" /></td>
        </tr>
        <tr>
            <td><img src="Images/Transparent.png" alt="" /></td>
        </tr>
        <tr>
            <td align="center"><img src="Images/Redirect.gif" alt="Please wait while redirecting" /></td>
        </tr>
    </table>
</div>
<p>
    <asp:TextBox ID="txtIP" runat="server"></asp:TextBox>
</p>
</form>

请注意,textbox的text属性在页面加载事件中会发生变化,如下所示:

    protected void Page_Load(object sender, EventArgs e)
    {
        this.txtIP.Text = Request.QueryString["ip"];
    }

然后在这个aspx页面中我创建了一个五秒钟的定时器来重定向到新分配的IP,如下面的代码所示:

<SCRIPT language="JavaScript" type="text/javascript">
    <!--
    var secs
    var timerID = null
    var timerRunning = false
    var delay = 1000

    function InitializeTimer()
    {
        // Set the length of the timer, in seconds
        secs = 5
        StopTheClock()
        StartTheTimer()
    }

    function StopTheClock()
    {
        if(timerRunning)
            clearTimeout(timerID)
        timerRunning = false
    }

    function StartTheTimer()
    {
        if (secs==0)
        {
            StopTheClock()

            // Here's where you put something useful that's
            // supposed to happen after the allotted time.
            var ip = document.getElementById('<%= txtIP.ClientID %>').value;
            window.location.href = "http://" + ip;
        }
        else
        {
            self.status = secs
            secs = secs - 1
            timerRunning = true
            timerID = self.setTimeout("StartTheTimer()", delay)
        }
    }

    window.onload = function() {
        // Hide textbox from user
        document.getElementById('<%= txtIP.ClientID %>').style.display = 'none';
        InitializeTimer();
    }
    //-->
</SCRIPT>

到达Redirector.aspx页面后,页面会在五秒后自动重定向到新的IP地址。希望这个逻辑可以帮助那里的人。

© www.soinside.com 2019 - 2024. All rights reserved.