Доступ к веб-сервисам localhost с компьютера в сети - PullRequest
2 голосов
/ 21 января 2010

Я пытаюсь разработать приложение для iPhone для использования веб-службы, написанной на C #. Я хочу иметь доступ к веб-странице через локальный хост на моем ПК (http://localhost:54053/Service1.asmx), поэтому мне пока не нужно запускать веб-службу в прямом эфире. Любые рекомендации, как это сделать?

Большое спасибо.

Ответы [ 4 ]

1 голос
/ 28 ноября 2011

Встроенный сервер Cassini привязывается напрямую к 127.0.0.1 и доступен только локально.

Вы можете попробовать трюк Прикрепите сокет к вашему адресу локального веб-сервиса, как это

var localSocket =new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
               localSocket .Connect(new IPEndPoint(IPAddress.Loopback, localPortnumber));

Затем привяжите сокет к IpEndPoint следующим образом

 Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                listener.Bind(new IPEndPoint(IPAddress.Any, 8080));

А затем получите доступ к вашему веб-сервису в режиме клиент-сервер.

Полный рабочий пример можно увидеть здесь .


.

1 голос
/ 21 января 2010

Вам придется использовать IIS на компьютере разработчика. Встроенный сервер Cassini напрямую связан с 127.0.0.1 и доступен только локально. Чтобы получить к нему доступ с удаленного устройства, вам нужно настроить хост в IIS. Кассини имеет ограничение 127.0.0.1 и недоступен удаленно.

Если у вас есть веб-сайт, настроенный для ответа на IP-адрес, который не является 127.0.0.1, и настроенный для обслуживания вашего нового веб-сервиса, то вы можете использовать IP-адрес для доступа к нему.

0 голосов
/ 21 января 2010

Полагаю, у вас на Mac работает телефон или эмулятор. Это означает, что они не находятся на той же машине, что и ваш веб-сервис, разработанный на asp.net.

Вам необходимо изменить "localhost" на IP, по которому ваш компьютер может быть доступен. Вы можете сделать это, запустив «ipconfig». Если mac находится в той же локальной сети, что и ваш сервис, то это, вероятно, 192.x.x.x что-то или 10.x.x.x что-то.

Например: http://192.168.1.20:54053/Service1.asmx будет адрес в моей локальной сети.

Если вам нужно использовать интернет-адрес, он намного сложнее, поскольку вам, скорее всего, придется открывать порты брандмауэра и выполнять переадресацию портов на шлюзе / маршрутизаторе.

0 голосов
/ 21 января 2010

Сначала заставь это работать как

http://localhost/Service1.asmx

Для этого вы должны заставить свой веб-сервис работать в локальном IIS.

Тогда найдите Ip вашего локального компьютера.

www.whatismyipd.com

Затем убедитесь, что порт 80 открыт (если вы не уверены, как это сделать, попробуйте отключить брандмауэр Windows)

Затем вызовите веб-сервис с вашим IP-адресом как: http://xxx.xxx.xxx.xxx/Service.asmx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...