2009-03-17 22 views
18

I sabe que en general, esto no se puede hacer, es decir, conseguir que otra PC llame a un sitio alojado en el servidor web de desarrollo ASP.NET de forma remota (generalmente solo se puede usar localhost: puerto para acceder).¿Hay alguna manera de realizar llamadas remotas al servidor web de desarrollo ASP.NET?

Pero me preguntaba si alguien ha visto o conoce una forma de evitarlo. Soy un desarrollador de API RESTful en mi oficina, y me gustaría que los chicos de PHP prueben las API en mi máquina para poder adjuntar el depurador de Visual Studio 2005, y puedo encontrar problemas más fácilmente.

El principal problema es que mi máquina es una máquina Vista, y desafortunadamente las API que he desarrollado no funcionan bajo IIS7, incluso el modo Pool clásico de aplicaciones (lo que elimina el alojamiento en IIS local imposible).

Como alternativa, ¿hay alguna manera de usar IIS6 en otra máquina para satisfacer mis necesidades?

actualización

Basado en el consejo que he recibido y después de mucho ensayo y error con las sugerencias hechas, yo era capaz de conseguir calamar para actuar como un proxy inverso y hacer exactamente lo que quería hacer. He escrito sobre él http://www.ashleyangell.com/index.php/2009/03/configuring-a-basic-reverse-proxy-in-squid-on-windows-website-accelerator/ en caso de que alguien más quiera hacer lo mismo.

+0

La entrada del blog a la que enlazas ya no existe. –

+0

Lo siento, moví mi blog y eliminé el subdominio 'blog'. Ahora está arreglado. – Ash

Respuesta

3

¿No puedes simplemente ejecutar IIS7 en Classic Application Pool mode?

El Servidor web de desarrollo está estrictamente limitado a Localhost, o necesita descompilarlo y volver a compilarlo, o configurar algún tipo de Proxy en su máquina.

Y en un tema no relacionado: Aunque Win2003 Server SP2 R2 debería ser admitido hasta marzo de 2012, tal vez se deba agregar soporte IIS7 a su aplicación para asegurarse de que también se pueda ejecutar en 2008 Server.

+0

Ya lo intenté, y si bien las limitaciones obvias no son buenas, debido a las restricciones de mi empleador, no es posible en este momento. Eventualmente, espero pasar al marco ASP.NET MVC para mis API (o incluso mejor, Ruby), pero esto aún no es posible. – Ash

+0

¿Cómo configuro un proxy para él? Supongo que requeriría un proxy inverso, pero ¿cómo se hace? – Ash

+0

Una buena pregunta, nunca establezca uno solo (solo sé que existen), pero vi un artículo sobre cómo escribir uno (irónicamente uno que se ejecuta en IIS): http://www.codeproject.com/KB/web- seguridad/HTTPReverseProxy.aspx –

3

Puede depurar remotamente en una computadora con IIS6. Consulte esta publicación de blog sobre cómo configurarlo: http://blogs.iis.net/brian-murphy-booth/archive/2008/05/23/remoting-debugging-asp-net-applications-using-visual-studio-2008.aspx

Aquí hay un enlace para vs2005: http://aspnet2holes.blogspot.com/2006/11/debug-aspnet-20-running-under-iis-60.html. Todavía recomiendo comprobar el 2008, solo por algunos comentarios adicionales que tiene.

+0

Esto es para Visual Studio 2005 ... – Ash

+0

@Ash agregó un enlace para vs 2005 – eglasius

+0

Por lo tanto, esta opción no funcionará porque el código debe copiarse en el servidor que aloja IIS. Sin mencionar los problemas de seguridad con la oficina en un dominio. – Ash

0

¿Cambiar el canal IIS 7 a Classic no resuelve sus problemas de compatibilidad? VS 2005 tiene un depurador remoto, al igual que muchas versiones anteriores.

+0

Intenté configurar mi proyecto para "Usar el servidor web de IIS", pero no me lo permitió, diciéndome que la función solo estaba disponible en instalaciones IIS locales. :( – Ash

+0

¿Es posible configurar el proyecto para que se implemente automáticamente en esa máquina IIS? Nunca he hecho depuración remota antes. – Ash

+0

Necesita instalar y ejecutar el depurador remoto en el servidor, luego conectarse usando el "Adjuntar al proceso" función en el menú VS Debug. – cdonner

1

Es posible que desee echar un vistazo a la versión de UltiDev de Cassini web server. Tomaron el servidor web Cassini de Microsoft Open Source y lo mejoraron para permitir, entre otras cosas, conexiones remotas.

Puede adjuntar VS al proceso y ver cómo se llaman sus API RESTful desde la aplicación PHP, exactamente como se describe arriba.

+0

Logré que Cassini ejecutara mi aplicación web y está accesible para otras PC en el Office, que es exactamente lo que quería, pero no puedo conseguir que se depure para la aplicación web, los símbolos no se cargan, así que no puedo depurar. Intenté adjuntarme al proceso que ejecuta el sitio, pero no me lo permite. – Ash

0

¡SÍ HAY! : D

También estaba buscando en torno a superar esta limitación desde hace algún tiempo y accidentalmente me topé siguiente artículo:

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

no he probado a mí mismo, sin embargo, pero se ve rápida & sencilla (aunque algunos pueden decir que esto es hardcore).
BTW.Te recomiendo que mires otras publicaciones al Erich Eichinger's blog, ya que hay más cosas realmente valiosas.

+0

También puede eche un vistazo a http://devserver.codeplex.com/ y IIS Express –

7

He intentado http://code.activestate.com/recipes/483732-asynchronous-port-forwarding/ exitosamente. Es un script de Python que solo reenvía el tráfico.

Suponiendo que la máquina de su servidor dev se ejecuta en es 192.168.42.42 y el servidor dev está en el puerto 12345, ejecute la secuencia de comandos (en la misma máquina) con los argumentos de línea de comandos

-l 192.168.42.42 -p 8000 -r 127.0.0.1 -P 12345 

Desde un equipo diferente, puede acceder al servidor a través del http://192.168.42.42:8000.

asegúrese de cambiar sender.handle_close como se ha señalado por Dwight Walker en los comentarios:

def handle_close(self): 
    self.close() 
    if len(self.receiver.to_remote_buffer) == 0: 
     self.receiver.close() 
1

sólo tiene que utilizar un simple túnel TCP de Java. Descargue esta aplicación Java &, solo haga un túnel en el tráfico. ¡No es necesario jugar con IIS!

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

En símbolo del sistema, tendría a continuación, ejecuta la aplicación Java como esto ... Vamos a suponer que desea el acceso externo en el puerto 80 y su entorno de depuración estándar ejecuta en el puerto 1088 ...

java-jar tunnel.jar 80 localhost 1088 (también aquí la respuesta: Acceso asp servidor de desarrollo de la red externa a la máquina virtual.)

2

Básicamente yo pasamos 5 horas haciendo este trabajo, y en última instancia, si quieres una solución de 5 minutos aquí va :

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

+0

Esto no parece funcionar. No puede vincular dos puertos locales (8080) dos veces. Tal vez esto es un error tipográfico? – Sha

+0

SPI PortForward permitirá el reenvío de múltiples puertos habilitando un bucle :) esto es lo que lo hace funcionar ... – DropHit

Cuestiones relacionadas