Не удается отладить службу wcf-windows - PullRequest
3 голосов
/ 08 ноября 2010

Наше приложение обращается к службе WCF, которая размещена службой Windows на одном компьютере. Клиентское приложение и сервис всегда будут на одном компьютере.

Я создал службу Windows, в которой размещается служба WCF. Чтобы проверить мой код службы Windows, я создал консольное приложение, которое содержит тот же app.config и код, что и моя служба Windows. Я запускаю консольное приложение в одном потоке отладки и запускаю свой клиент в другом потоке отладки. Все работает отлично, и я легко могу использовать отладчик.

Теперь руб ...

Итак, я создал установщик и установил мою службу Windows. После успешного запуска я успешно добавил ссылку на службу в мой клиент, используя http://localhost/VssService в Visual Studio 2010. Я успешно подключился к службе через «Присоединить к процессу». Я запустил мой клиент в потоке отладки, но когда я пытаюсь войти в удаленный метод, я получаю сообщение «Невозможно автоматически войти в сервер. Отладчику не удалось остановить в процессе сервера». Это происходит как для [NetNamedPipeBinding_IVssService], так и для [BasicHttpBinding_IVssService]. Я боролся с этим часами и у меня кончились идеи, поэтому я надеюсь, что вы мне поможете. Я включил файлы app.config для моей службы Windows и клиентского приложения. Надеюсь, они помогут.

Я благодарен вам за то, что вы нашли время прочитать этот вопрос, и надеюсь, что вы поможете решить эту проблему ...

Mike

===================== ОБСЛУЖИВАНИЕ APP.CONFIG ====================== =======

    <services>
        <service behaviorConfiguration="VssServiceBehavior" name="ClientSaver.VssService.VssService">
            <endpoint address="net.pipe://localhost/VssService/Pipe/" binding="netNamedPipeBinding"
                bindingConfiguration="" contract="ClientSaver.VssService.IVssService" />
            <endpoint address="http://localhost/VssService/" binding="basicHttpBinding"
                bindingConfiguration="" contract="ClientSaver.VssService.IVssService" />
            <endpoint address="http://localhost/VssService/MEX/" binding="mexHttpBinding"
                bindingConfiguration="" contract="IMetadataExchange" />
            <host>
                <baseAddresses>
                    <add baseAddress="http://localhost/VssService/" />
                </baseAddresses>
            </host>
        </service>
    </services>

  <behaviors>
    <serviceBehaviors>
      <behavior name="VssServiceBehavior">
        <serviceMetadata httpGetEnabled="True" policyVersion="Policy15" />
        <serviceDebug includeExceptionDetailInFaults="False" />
      </behavior>
    </serviceBehaviors>
  </behaviors>      
</system.serviceModel>

========================= КЛИЕНТ APP.CONFIG ================== ===========

            <endpoint address="http://localhost/VssService/" binding="basicHttpBinding"
                bindingConfiguration="" contract="ClientSaver.VssService.IVssService" />                            
        </service>
    </services>

  <behaviors>
    <serviceBehaviors>
      <behavior name="VssServiceBehavior">
        <serviceMetadata httpGetEnabled="true" policyVersion="Policy15" />
        <serviceDebug includeExceptionDetailInFaults="true" />
      </behavior>
    </serviceBehaviors>
  </behaviors>      
</system.serviceModel>

Ответы [ 5 ]

3 голосов
/ 26 ноября 2010

Хорошо. Один из способов, которым я использую, когда отладка VS перестает работать, - это поместить System.Diagnostics.Debugger.Break() в удобное место в служебном коде (скажем, конструктор или метод). Это вызывает запуск JIT-отладчика и позволяет мне подключаться к сервису с кодом, поврежденным в тот момент, с любым имеющимся у меня экземпляром VS.

Очевидно, что вы удаляете его из не отладочного кода.

0 голосов
/ 19 декабря 2010

Вы пробовали вручную загружать символы отладки?Однажды это случилось со мной, потому что VS не загружал символы.

0 голосов
/ 08 ноября 2010

Вы должны использовать Internet Explorer в качестве браузера по умолчанию для отладки вашего сервиса ...

0 голосов
/ 26 ноября 2010

Посмотрите на инструменты отладки для Windows.Здесь есть несколько инструментов, которые полезны для отладки служб Windows.

0 голосов
/ 08 ноября 2010

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

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