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