Служба WCF REST (самостоятельно размещенная), доступная только в локальной сети (и должна быть доступна удаленно)

У меня есть собственная служба 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, чтобы иметь желаемый порт.


person jRicardo    schedule 19.08.2013    source источник
comment
это больше похоже на проблему с DNS   -  person Yahia    schedule 19.08.2013
comment
Я предполагаю, что это не DNS, потому что до этих тестов я использовал тот же порт для Apache, и он работал (конечно, сейчас я не использую Apache).   -  person jRicardo    schedule 19.08.2013
comment
недостаточно информации, чтобы помочь... проверьте журнал событий...   -  person Yahia    schedule 19.08.2013
comment
Вот в чем проблема... В журнале событий ничего не отображается, как будто соединение не было установлено.   -  person jRicardo    schedule 19.08.2013
comment
На самом деле проблема была в роутере. +1 за то, что заставил меня разобраться в этом... Извините за это...   -  person jRicardo    schedule 19.08.2013


Ответы (1)


Изменять

new Uri("http://m.y.i.p:8080");

to

new Uri("http://0.0.0.0:8080");
person I4V    schedule 19.08.2013
comment
+1, так как это поможет мне теперь, когда я знаю, что мне не нужно устанавливать IP на каждом компьютере, на котором я буду использовать свою программу. - person jRicardo; 19.08.2013