Исключение сокета WCF

Я разрабатываю приложение WCF в VS2010. Когда я использую встроенный в IDE отладчик для запуска хост-приложения и клиента, все работает, как задумано.

Однако, когда я запускаю два исполняемых файла вручную (переходя в папки /bin/Debug/), я получаю от клиента следующее исключение:

System.Net.Sockets.SocketException: не удалось установить соединение, поскольку целевая машина активно отказалась от него 127.0.0.1:8732

Странно то, что в файле app.config я указываю использовать порт 5000, а не 8732.

Что случилось? Заранее спасибо.

РЕДАКТИРОВАТЬ: Вот app.config для хост-приложения:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <system.web>
    <compilation debug="true" />
  </system.web>
  <!-- When deploying the service library project, the content of the config file must be added to the host's 
  app.config file. System.Configuration does not support config files for libraries. -->
  <system.serviceModel>
    <services>
      <service name="WCFServiceLibrary.SavalotServiceObject">
        <endpoint address="" binding="wsHttpBinding" contract="WCFServiceLibrary.ISavalotService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:5000/Design_Time_Addresses/WCFServiceLibrary/SavalotServiceObject/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, 
          set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="True"/>
          <!-- To receive exception details in faults for debugging purposes, 
          set the value below to true.  Set to false before deployment 
          to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

</configuration>

person Xenoprimate    schedule 14.03.2012    source источник
comment
что происходит, когда вы нажимаете ctrl + F5 и запускаете его без отладки   -  person deltree    schedule 15.03.2012
comment
тогда ваша проблема в том, что в вашем конфигурационном файле есть специальные настройки отладки.   -  person deltree    schedule 15.03.2012
comment
deltree Я добавил app.config в свой пост выше, что мне нужно изменить? Спасибо   -  person Xenoprimate    schedule 15.03.2012
comment
Пожалуйста, не добавляйте к названиям префикс C# и тому подобное. Вот для чего нужны теги.   -  person John Saunders    schedule 15.03.2012
comment
@Motig Visual Studio создает файл конфигурации отладки и выпуска ниже вашего файла конфигурации hanselman.com/blog/content/binary/Windows-Live-Writer/   -  person deltree    schedule 15.03.2012
comment
@deltree Отрицательно, у меня есть только app.config. Нет узла для расширения, как на картинке.   -  person Xenoprimate    schedule 15.03.2012
comment
Попробуйте перестроить решение вместо сборки. Иногда мои файлы конфигурации отказываются перезаписываться. Если это не сработает, попробуйте удалить все в папке /bin и заново собрать решение. Дайте мне знать, если это получится.   -  person deltree    schedule 15.03.2012
comment
@deltree Нет, пока только один app.config.   -  person Xenoprimate    schedule 15.03.2012
comment
@Motig Я имел в виду, посмотри, заработает ли это   -  person deltree    schedule 15.03.2012
comment
Ах хорошо. Нет, похоже, он все еще пытается связаться с хостом на 8732, я действительно не понимаю, почему.   -  person Xenoprimate    schedule 15.03.2012
comment
это решение для нескольких проектов? Вы меняете правильную конфигурацию? Если вы тестируете, вашему тестовому проекту требуется конфигурация приложения с правильной конечной точкой, если вы размещаете проект hte, проекту службы wcf требуется файл web.config с правильной конечной точкой.   -  person deltree    schedule 15.03.2012
comment
@deltree Это решение для нескольких проектов, да. Это исправило это, я думаю, я нуб с WCF, так что извините, что потратил впустую ваше время. Спасибо! :)   -  person Xenoprimate    schedule 15.03.2012


Ответы (2)


РАЗМЕЩЕНО, ЧТОБЫ ПОЛЬЗОВАТЕЛЯМ НЕ НАДО было ПРОЧИТАТЬ 13 КОММЕНТАРИЙ

В данном случае проблема заключалась в том, что пользователь запускал решение, состоящее из нескольких проектов. В этом случае какой бы проект ни выполнялся, это проект, файл конфигурации которого имеет значение.

Если вы запускаете WcfService, вам понадобится проект со службой, чтобы его файл web.config был настроен для использования правильных портов.

Если вы тестируете WcfService, вам потребуется, чтобы в тестовом проекте файл app.config был настроен на использование правильных портов.

Это распространенная ошибка новичков в веб-сервисах, и в ней нет ничего постыдного.

person deltree    schedule 14.03.2012

Вы пытались использовать что-то вроде WireShark? Запуск его на обеих конечных точках — хороший способ устранения проблем с сокетами.

person kmarks2    schedule 14.03.2012