Есть ли способ сделать удаленные звонки на веб-сервер разработки ASP.NET?

Я знаю, что, вообще говоря, это невозможно сделать, то есть заставить другой компьютер удаленно вызывать сайт, размещенный на веб-сервере разработки ASP.NET (обычно вы можете использовать только localhost:port для доступа к нему).

Но мне было интересно, видел ли кто-нибудь или знает, как обойти это? Я являюсь разработчиком RESTful API в моем офисе, и я хотел бы, чтобы ребята из PHP тестировали API на моей машине, чтобы я мог подключить отладчик Visual Studio 2005, и мне было бы легче находить проблемы.

Основная проблема заключается в том, что моя машина является машиной Vista, и, к сожалению, разработанные мной API не работают под IIS7, даже в режиме Classic Application Pool (что исключает возможность размещения их на локальном IIS).

В качестве альтернативы, есть ли способ использовать IIS6 на другой машине для удовлетворения моих потребностей?

Обновить

Основываясь на полученном мной совете и после долгих проб и ошибок с внесенными предложениями, я смог заставить Squid выступать в качестве обратного прокси-сервера и делать именно то, что я хотел. Я написал в блоге об этом http://www.ashleyangell.com/index.php/2009/03/configuring-a-basic-reverse-proxy-in-squid-on-windows-website-accelerator/ на случай, если кто-то захочет сделать то же самое.

10 ответов

Решение

Разве вы не можете просто запустить IIS7 в режиме Classic Application Pool?

Веб-сервер разработки строго ограничен Localhost, вам необходимо либо декомпилировать и перекомпилировать его, либо установить какой-либо прокси на вашем компьютере.

И по не связанной теме: Хотя Win2003 Server SP2 R2 и должен поддерживаться до марта 2012 года, возможно, в ваше приложение должна быть добавлена ​​поддержка IIS7, чтобы вы могли работать и на 2008 Server.

Это значительно проще, чем опция Squid:

"Доступ к серверу разработки Visual Studio ASP.NET с iPhone"

Также есть обновление, которое хорошо работает и под Windows 7:

"Доступ iPhone к серверу разработки Visual Studio ASP.NET - обновление для Windows 7"

Я только что попытался http://code.activestate.com/recipes/483732-asynchronous-port-forwarding/ успешно. Это скрипт Python, который просто перенаправляет трафик.

Предполагается, что машина, на которой работает ваш dev-сервер, 192.168.42.42 и сервер разработки находится на порте 12345запустить скрипт (на том же компьютере) с аргументами командной строки

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

С другого компьютера вы можете получить доступ к серверу через http://192.168.42.42:8000,

Обязательно поменяй sender.handle_close как отметил Дуайт Уокер в комментариях:

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

Вы можете отлаживать удаленно на компьютер с IIS6. Посмотрите эту запись блога о том, как ее настроить: http://blogs.iis.net/brian-murphy-booth/archive/2008/05/23/remoting-debugging-asp-net-applications-using-visual-studio-2008.aspx

Вот ссылка на vs2005: http://aspnet2holes.blogspot.com/2006/11/debug-aspnet-20-running-under-iis-60.html. Я все еще рекомендую проверить 2008 год, только для некоторых дополнительных комментариев.

По сути, я потратил 5 часов на выполнение этой работы, и, в конечном итоге, если вы хотите 5-минутное исправление, то здесь

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

Возможно, вы захотите взглянуть на версию UltiDev веб-сервера Cassini. Они взяли веб-сервер Microsoft Open Source Cassini и усовершенствовали его, чтобы разрешить, среди прочего, удаленные подключения.

Вы можете подключить VS к процессу и наблюдать, как ваши API-интерфейсы RESTful вызываются из приложения PHP, точно так же, как вы описали выше.

Просто используйте простой туннель Java TCP. Загрузите это Java-приложение и просто верните трафик обратно. Нет необходимости возиться с IIS!

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

В командной строке вы затем запустите java-приложение следующим образом... Предположим, вам нужен внешний доступ через порт 80, а ваша стандартная среда отладки работает через порт 1088...

java -jar tunnel.jar 80 localhost 1088 (также здесь ответ: Доступ к серверу разработки asp.NET, внешнему по отношению к ВМ)

Этот пост помог мне: http://staticvoidmain.cognitioab.se/index.php/2013/01/remote-debugging-asp-net-development-server-with-spi-port-forward/ Он предлагает использовать сторонние приложение на вашем компьютере разработчика, чтобы действовать в качестве прокси (вроде). Таким образом, вы подключаетесь к этому приложению, и оно перенаправляет все ваши запросы на сервер разработки. Работает как по волшебству:)

Переключение IIS 7 на классический конвейер не решает проблемы совместимости? VS 2005 имеет удаленный отладчик, как и многие версии до этого.

ДА, ЕСТЬ!:D

Я также искал вокруг, чтобы преодолеть это ограничение в течение некоторого времени, и случайно наткнулся на следующую статью:

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

Я сам еще не пробовал, но выглядит быстро и просто (хотя некоторые могут сказать, что это хардкор).
КСТАТИ. Я рекомендую вам взглянуть на некоторые другие посты в блоге Эриха Айхингера, так как есть более ценные вещи.

Другие вопросы по тегам