Очень новый для Self Host WebApi, но я очень впечатлен его простотой использования и расширяемости. По крайней мере, через это tutorial. Все, что я делал до сих пор, работает на моей машине разработки, независимо от того, использую ли я localhost, 127.0.0.1 или мой LAN Ip (192.168.0.x), но я сбив с толку, почему я не могу получить доступ к сервису с любого другого компьютера, даже другие в той же подсети.Self Hosted WebApi, доступный по локальной сети
Короче после прохождения урока на машине, на которой он работает: Просмотр в
localhost:3636/api/products/
приводит к ожидаемому XML возврата На другой машине на просмотр LAN к:
192.168.0.x:3636/api/products/
приводит к таймауту Точки данных для тех, кто может знать, как все это взаимодействует:
1.) Моя машина dev (192.168.0.x, сервер, хост, что вы хотите назвать) имеет IIS; Я был так параноидален это было в том, что я ее остановил с помощью администрирования GUI
2.) Я зарезервировал URL/порт со следующими казнями командной строки:
>netsh http add urlacl url=http://+:3636/ user=DOMAIN\USER listen=yes delegate=yes
>netsh http add urlacl url=http://192.168.0.x:3636/ user=DOMAIN\USER listen=yes delegate=yes
2б) Я «уже пробовал оба эти вместе и по отдельности, и попытался изменить пользователь„все“без толка
3.) Я попытался изменить код в учебнике, чтобы установить
config.HostNameComparisonMode = HostNameComparisonMode.Exact //default is Strong Wildcard
- .) Я могу успешно выполнить ping и tracert до 192.168.0.x с других компьютеров в локальной сети.
5.) Друг рекомендовал настроить TCPListener и обеспечить, чтобы я мог использовать telnet для устранения брандмауэра как возможности. Если эта логика звучит, брандмауэр не является проблемой
EDIT: Спасибо за вашу помощь, вот еще одна точка данных, которая, я считаю, подтверждает, что это не проблема с брандмауэром. Я ранее размещал это соединение, когда за довольно тупым (по крайней мере, с не сертифицированным парнем, как я) Juniper Firewall/Router. С тех пор я переделал учебник на другой машине (без IIS) в своей домашней сети и до сих пор не могу опубликовать эту услугу на других компьютерах в моей локальной сети. Есть идеи?
Вы используете службу под DOMAIN \ USER? Обычно я обнаружил, что проще запустить службу как NETWORK SERVICE, а затем в команде netsh, которую вы положили user = «NT AUTHORITY \ NETWORK SERVICE» –
Кроме того, я бы дважды проверил ваш брандмауэр и удостоверился, что netstat -a показывает ваше служение. –
Спасибо Даррел за идеи. В настоящее время я все еще выполняю службу в отладке под своим пользователем (у кого есть права администратора, если это имеет значение). Я запустил netstat -a (на моем dev/хостинге, если это то, что вы имели в виду), и посмотрите следующие записи (среди прочих): Прото локальный адрес Состояние внешнего адреса TCP 0.0.0.0:3636 ДОМЕН: 0 ПРОСЛУШИВАНИЕ TCP [ ::]: 3636 ДОМЕН: 0 ПРОСЛУШИВАНИЕ Не совсем уверен, что с этим делать. Думаю, я постараюсь подтвердить брандмауэр. – David