19

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?

Update

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.

Ash
  • 24,276
  • 34
  • 107
  • 152
  • The blog entry you link to does not exist any more. – Jeroen Wiert Pluimers Nov 14 '09 at 10:14
  • Sorry about that- I moved my blog and dropped the 'blog' sub-domain. Its now fixed. – Ash Nov 15 '09 at 23:30
  • You can debug remotely to a computer with IIS6. Check this blog post on how to set it up: http://blogs.iis.net/brian-murphy-booth/archive/2008/05/23/remoting-debugging-asp-net-applications-using-visual-studio-2008.aspx Here is a link for vs2005: http://aspnet2holes.blogspot.com/2006/11/debug-aspnet-20-running-under-iis-60.html. I still recommend to check the 2008 one, just for some extra comments it has. – eglasius Mar 17 '09 at 01:51
  • @Ash added a link for vs 2005 – eglasius Mar 17 '09 at 03:17
  • So this option isnt going to work becasue the code needs to be copied to the server hosting IIS. No to mention security issues with the office being on a domain. – Ash Mar 18 '09 at 00:40

9 Answers9

14

This is substantially easier than the Squid option:

"Accessing the Visual Studio ASP.NET Development Server from iPhone"

Also there is an update that works well under Windows 7, too:

"iPhone Accessing the Visual Studio ASP.NET Development Server - Windows 7 Update"

Uwe Keim
  • 39,551
  • 56
  • 175
  • 291
Matt Kocaj
  • 11,278
  • 6
  • 51
  • 79
7

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 http://192.168.42.42:8000.

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()
balpha
  • 50,022
  • 18
  • 110
  • 131
3

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.

Michael Stum
  • 177,530
  • 117
  • 400
  • 535
  • Already tried, and while the obvious limitations are not good, due to my employers restrictions, not possible at the moment. Eventually I hope to move to the ASP.NET MVC framework for my APIs (or even better, Ruby) but this is not possible - yet. – Ash Mar 17 '09 at 02:05
  • How do I setup a proxy for it? I assume it would require a reverse proxy, but how is that done? – Ash Mar 17 '09 at 02:06
  • Good question, never set one up myself (I only know that they do exist), but I saw an article about writing one (ironically one that runs on IIS): http://www.codeproject.com/KB/web-security/HTTPReverseProxy.aspx – Michael Stum Mar 17 '09 at 02:09
  • I am not sure a proxy would work, i.e. that the IP packets would arrive at a low enough level for the web server to appear local. – cdonner Mar 17 '09 at 02:11
  • Shouldn't proxies be transparent? It's been a while since I ran the Web Server through Reflector, but I think that the check is purely IP based, so I think this should work. But as said, never set one up myself, so that's just the Theory. – Michael Stum Mar 17 '09 at 02:26
2

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

Z

DropHit
  • 1,695
  • 15
  • 28
  • This does not seem to work. You cannot bind two local ports (8080) twice. Perhaps this is a typo? – Sha Apr 17 '13 at 02:17
  • SPI PortForward will allow multiple ports to forward enabling a loop :) this is what makes it work .. – DropHit Apr 25 '13 at 22:50
1

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.

Christopher G. Lewis
  • 4,777
  • 1
  • 27
  • 46
  • I managed to get Cassini running my web application and its accessible to other PCs in the office, which exactly what I wanted, but I cannot get it to go into debug for the web application - the symbols wont load so I cant debug. I tried attaching to the process running the site but it wont let me. – Ash Mar 18 '09 at 00:38
1

Just use a simple Java TCP tunnel. Download this Java app & just tunnel the traffic back. No messing with IIS necessary!

http://jcbserver.uwaterloo.ca/cs436/software/tgui/tcpTunnelGUI.shtml

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)

strongriley
  • 1,093
  • 1
  • 15
  • 12
0

This post helped me: http://staticvoidmain.cognitioab.se/index.php/2013/01/remote-debugging-asp-net-development-server-with-spi-port-forward/ 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 :)

FreeNickname
  • 7,398
  • 2
  • 30
  • 60
0

YES THERE IS! :D

I was also looking around to overcome this limitation for some time and accidentally I stumbled upon following article:

http://eeichinger.blogspot.com/2009/12/sniff-http-traffic-with-aspnet.html

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.

Piotr Owsiak
  • 6,081
  • 8
  • 39
  • 42
0

Switching IIS 7 to Classic pipeline does not resolve your compatibility issues? VS 2005 has a remote debugger, as did many versions before that.

cdonner
  • 37,019
  • 22
  • 105
  • 153
  • I tried setting my project to "Use IIS Web server" but it wouldnt let me - telling me that the feature was only available on local IIS installations. :( – Ash Mar 17 '09 at 02:08
  • Is it possible to setup the project so it automatically deploys to that IIS machine? I have never done remote debugging before. – Ash Mar 17 '09 at 02:08
  • You need to install and run the remote debugger on the server, then connect using the "Attach to Process" feature in the VS Debug menu. – cdonner Mar 17 '09 at 02:09
  • If your project is a standard web site or web application, yes, you can deploy from Visual Studio to the server. – cdonner Mar 17 '09 at 02:10