brnwdrng
brnwdrng

Reputation: 521

Set IP address of HttpWebRequest

I have a site with a fixed IP address, and I make c# calls to backend data server methods via HttpWebRequest. This backend system will be set to only permit incoming requests from my site's IP fixed address.

Is there a way to set the IP address of the HttpWebRequest to my site's IP (I suspect my cloud host or .net is somehow permitting other IPs being used)?

I'm not trying to spoof an IP; I want ensure that my asp.net code uses the site's own dedicated IP, or at least check to see what IPs it may be using when it makes requests.

Upvotes: 1

Views: 4793

Answers (1)

moander
moander

Reputation: 2178

Use the HttpWebRequest.ServicePoint.BindIPEndPointDelegate property:

request.ServicePoint.BindIPEndPointDelegate = delegate 
    { 
        return new IPEndPoint(IPAddress.Parse("10.0.0.3"), 0); 
    };

Example:

using System;
using System.Net;
using System.IO;

class Program
{
    public static void Main ()
    {
        var request = (HttpWebRequest)HttpWebRequest.Create ("http://smsc.vianett.no/ip/");
        request.ServicePoint.BindIPEndPointDelegate = delegate { return new IPEndPoint(IPAddress.Parse("YOUR_IP_HERE"), 0); };
        var response = (HttpWebResponse)request.GetResponse ();
        Console.WriteLine (new StreamReader (response.GetResponseStream ()).ReadToEnd ());
    }
}

Upvotes: 5

Related Questions