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 =============================
<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>
========================= CLIENT 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>
Ok. One way I use when VS debugging stops working is to place a System.Diagnostics.Debugger.Break() in a conventient place in the service code (say, constructor or method). This causes the JIT debugger to fire up and allows me to connect to the service with the code broken at that point with any VS instance I have.
Obviously you remove it from non debugging code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With