У меня есть собственная служба REST (на C#), которая отлично работает в моей локальной сети, но недоступна удаленно. Вот мой код хостинга:
static Uri baseAddress = new Uri("http://m.y.i.p:8080");
WebServiceHost serviceHost = new WebServiceHost(typeof(WebService.RestService),
baseAddress);
serviceHost.Open();
(Который запускается в Windows Forms, кстати).
Вот App.Config:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<bindings>
</bindings>
<services>
<service name="WebService.RestService" behaviorConfiguration="Default">
<host>
<baseAddresses>
</baseAddresses>
</host>
<endpoint address="" binding="webHttpBinding"
behaviorConfiguration="webBehavior"
contract="WebService.ICarga">
</endpoint>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata httpGetEnabled="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
Когда я ввожу в браузере 10.1.1.1:8080/test, он показывает именно то, что я хочу. Но когда я набираю my.y.i.p:8080/test, он недоступен. Брандмауэр выключен, я работаю от имени администратора и уже попробовал команду netsh. Порт 8080 правильно перенаправлен на мой компьютер. Как я могу сделать это доступным удаленно?
Спасибо.
РЕДАКТИРОВАТЬ: Для тех, кто изучает это в будущем, у меня была проблема с моим маршрутизатором (мой IP-адрес изменился, и я не изменил его в маршрутизаторе). Все должно работать, если вы правильно определите свой App.config. Если у вас есть эта проблема, дважды проверьте свой код, убедитесь, что ваша сеть работает так, как вы ожидаете, при необходимости отключите брандмауэр и, если вы не являетесь администратором, используйте ответ на этот вопрос или эту страницу MS, чтобы иметь желаемый порт.