Solved

Cannot debug a WCF-Windows Service.

Posted on 2010-11-07
1
1,650 Views
Last Modified: 2012-05-10
Hello,

Our application accesses a WCF service, which is hosted by a Windows Service on a single computer.  The client application and service always will be on the same computer.

I've created a Windows Service that hosts a WCF service.  To test my Windows Service code, I created a console application that contains the same app.config and code as my Windows Service.  I start the console application in one debugging thread, and launch my client in another debugging thread.  Everything works perfectly and I can easily use the debugger.

Now the rub...

So, I created an installer and installed my Windows Service.  After successfully starting it, I successfully added the Service Reference to my client using http://localhost/VssService within Visual Studio 2010.  I successfully attached to the service via "Attach To Process".  I launched my client in a debugging thread, but when I try to step into a remote method, I get "Unable to automatically step into the server.  The debugger failed to stop in the server process."  This happens for both [NetNamedPipeBinding_IVssService] and [BasicHttpBinding_IVssService].  I have been struggling with this for hours and have run out of ideas, so I hope that you can help me.  I've included the app.config files for my Windows Service and Client application. Hopefully they will help.

I appreciate your taking time to read this question and hope that you can help be to resolve this problem...

Mike



===================== SERVICE APP.CONFIG =============================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
      
        <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>
</configuration>
=======================================================


========================= CLIENT APP.CONFIG =============================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <compilation debug="true" />
  </system.web>
  <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IVssService" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
            </basicHttpBinding>
            <netNamedPipeBinding>
                <binding name="NetNamedPipeBinding_IVssService" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
                    hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
                    maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="Transport">
                        <transport protectionLevel="EncryptAndSign" />
                    </security>
                </binding>
            </netNamedPipeBinding>
        </bindings>
        <client>
            <endpoint address="net.pipe://localhost/VssService/Pipe/" binding="netNamedPipeBinding"
                bindingConfiguration="NetNamedPipeBinding_IVssService" contract="VssService.IVssService"
                name="NetNamedPipeBinding_IVssService">
                <identity>
                    <servicePrincipalName value="host/DEVPC_W7.aboh.local" />
                </identity>
            </endpoint>
            <endpoint address="http://localhost/VssService/" binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_IVssService" contract="VssService.IVssService"
                name="BasicHttpBinding_IVssService" />
        </client>
        <services>
            <service name="ClientSaver.VssService.VssService">
                <endpoint address="net.pipe://localhost" binding="netNamedPipeBinding"
                    bindingConfiguration="" contract="ClientSaver.VssService.IVssService" />

                <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>
</configuration>

Open in new window

0
Comment
Question by:mjgardne
1 Comment
 

Accepted Solution

by:
mjgardne earned 0 total points
ID: 34088722
I found that if I do the following, I can debug my service:

1) set a breakpoint in the service code;
2) attaching to its process;
3) running my application in a separate debugger thread

Run my application until it hits the breakpoint... Don't try to step into the service code... Won't work...
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The Confluence of Individual Knowledge and the Collective Intelligence At this writing (summer 2013) the term API (http://dictionary.reference.com/browse/API?s=t) has made its way into the popular lexicon of the English language.  A few years ago, …
In order to have all security and back ups taken care of, WordPress users can sign up for services with WP Engine.
The purpose of this video is to demonstrate how to set up the WordPress backend so that each page automatically generates a Mailchimp signup form in the sidebar. This will be demonstrated using a Windows 8 PC. Tools Used are Photoshop, Awesome…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

756 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question