c# - How to get public IP address using WebRequest

c# example - get public IP address using WebRequest
get-public-IP-address-using-WebRequest.aspx

<%@ Page Language="C#" AutoEventWireup="true"%>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.IO" %>

<!DOCTYPE html>
<script runat="server">
    protected void Button1_Click(object sender, System.EventArgs e)
    {
        String webRequestStream = "";
        WebRequest request = WebRequest.Create("http://checkip.dyndns.org/");
        using (WebResponse response = request.GetResponse())
        using (StreamReader stream = new StreamReader(response.GetResponseStream()))
        {
            webRequestStream = stream.ReadToEnd();
        }

        //those line extract public ip in the html
        int first = webRequestStream.IndexOf("Address: ") + 9;
        int last = webRequestStream.LastIndexOf("</body>");
        string publicIP = webRequestStream.Substring(first, last - first);

        Label1.Text = publicIP;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>c# example - get public IP address using WebRequest</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h2 style="color:DarkBlue; font-style:italic;">
            c# example - get public IP address using WebRequest
        </h2>
        <hr width="550" align="left" color="LightBlue" />  

        <asp:Label 
            ID="Label1" 
            runat="server"
            Font-Size="XX-Large"
            >
        </asp:Label>
        <br /><br />
        <asp:Button 
            ID="Button1" 
            runat="server" 
            Text="Get Public IP Address Using WebRequest" 
            OnClick="Button1_Click"
            Height="40"
            Font-Bold="true"
            />
    </div>
    </form>
</body>
</html>