I know that generally speaking, this cant be done, that is get another PC to call a site hosted under the ASP.NET DEvelopment Web Server remotely (generally you can only use localhost:port to get to it).
But I was wondering if anyone has seen, or knows of a way to get around it? I am a RESTful API developer in my office, and I would like the PHP guys to test the APIs on my machine so that I can have the Visual Studio 2005 debugger attached, and I can more easily find problems.
THe main issue is, that my machine is a Vista machine, and unfortunately, the APIs I have developed do not work under IIS7, even Classic Application Pool mode (which eliminates hosting them on a local IIS impossible).
Alternatively, is there a way to use IIS6 on another machine to suite my needs?
Based on the advise that I have gotten and after much trial and error with the suggestions made, I was able to get Squid to act as a reverse-proxy and do exactly what I wanted to do. I have blogged about it http://www.ashleyangell.com/index.php/2009/03/configuring-a-basic-reverse-proxy-in-squid-on-windows-website-accelerator/ in case anyone else wants to do the same thing.
Here is Solutions:
We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.
This is substantially easier than the Squid option:
Also there is an update that works well under Windows 7, too:
I have just tried http://code.activestate.com/recipes/483732-asynchronous-port-forwarding/ successfully. It’s a Python script that just forwards the traffic.
Assuming the machine your dev server runs on is
192.168.42.42 and the dev server is on port
12345, run the script (on the same machine) with the command line arguments
-l 192.168.42.42 -p 8000 -r 127.0.0.1 -P 12345
From a different machine, you can then access the server via
Be sure to change
sender.handle_close as noted by Dwight Walker in the comments:
def handle_close(self): self.close() if len(self.receiver.to_remote_buffer) == 0: self.receiver.close()
Can’t you just run IIS7 in Classic Application Pool mode?
The Development Web Server is strictly limited to Localhost, you would either need to decompile and recompile it, or set up some kind of Proxy on your machine.
And on an unrelated Topic: Even though Win2003 Server SP2 R2 should be supported up to March 2012, maybe IIS7 Support should be added to your application to make sure you can run on 2008 Server as well.
Basically i spent 5 hours making this work, and ultimately if you want a 5 min fix here goes:
1. Port forward incoming traffic to your local ip on your network TCP Any -> 3127-3128 TCP Any -> 80-81 TCP Any -> 8080 TCP Any -> 8000 TCP Any -> 8888 to 192.1681.1.3 (the local ip of the machine running .NET Dev server.) 2. Download SPI Port Forward 3. Heres the tricky part - Setup 2 forwarding rules as follows: Local port: 8080 Remote: localhost Remote port 8080 Local port: 8080 Remote: localhost Remote port: .NET Dev server port Without that second rule the .NET dev server wont serve the page 4. now visit your public IP address at port 8080 -- and you got it
You might want to take a look at UltiDev’s version of the Cassini web server. They took the Microsoft Open Source Cassini web server and enhanced it to allow among other things, remote connections.
You can attach VS to the process, and watch your RESTful APIs being called from the PHP application, exactly as you describe above.
Just use a simple Java TCP tunnel. Download this Java app & just tunnel the traffic back. No messing with IIS necessary!
In command prompt, you’d then run the java app like this… Let’s assume you want external access on port 80 and your standard debug environment runs on port 1088…
java -jar tunnel.jar 80 localhost 1088
(Also answered here: Accessing asp. net development server external to VM)
Switching IIS 7 to Classic pipeline does not resolve your compatibility issues?
VS 2005 has a remote debugger, as did many versions before that.
YES THERE IS! 😀
I was also looking around to overcome this limitation for some time and accidentally I stumbled upon following article:
I haven’t tried it myself yet, but looks quick & simple (although some may say this is hardcore).
BTW. I recommend you look at some other posts at Erich Eichinger’s blog, since there’s more really valuable stuff.
This post helped me:
It suggests using a third-party application on your developer machine to act as a proxy (sort of). So you connect to this app, and it forwards all your requests to the development server. Works like magic 🙂
Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂