gpt4 book ai didi

c# - 无法调试 wcf-windows 服务

转载 作者:行者123 更新时间:2023-11-30 16:32:20 25 4
gpt4 key购买 nike

我们的应用程序访问 WCF 服务,该服务由单台计算机上的 Windows 服务托管。客户端应用程序和服务始终位于同一台计算机上。

我创建了一个托管 WCF 服务的 Windows 服务。为了测试我的 Windows 服务代码,我创建了一个控制台应用程序,其中包含与我的 Windows 服务相同的 app.config 和代码。我在一个调试线程中启动控制台应用程序,并在另一个调试线程中启动我的客户端。一切正常,我可以轻松使用调试器。

现在擦...

因此,我创建了一个安装程序并安装了我的 Windows 服务。成功启动后,我使用 http://localhost/VssService 成功将服务引用添加到我的客户端在 Visual Studio 2010 中。我通过“附加到进程”成功附加到服务。我在调试线程中启动了我的客户端,但是当我尝试进入远程方法时,我得到“无法自动进入服务器。调试器无法在服务器进程中停止。” [NetNamedPipeBinding_IVssService] 和 [BasicHttpBinding_IVssService] 都会发生这种情况。我已经为此苦苦挣扎了几个小时并且已经没有想法了,所以我希望你能帮助我。我已经包含了我的 Windows 服务和客户端应用程序的 app.config 文件。希望他们能提供帮助。

感谢您花时间阅读这个问题,希望您能帮助解决这个问题...

迈克

===================== 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>

========================= 客户端 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>

最佳答案

好的。当 VS 调试停止工作时,我使用的一种方法是将 System.Diagnostics.Debugger.Break() 放在服务代码(例如,构造函数或方法)中的方便位置。这会导致 JIT 调试器启动,并允许我使用我拥有的任何 VS 实例连接到当时损坏的代码的服务。

很明显,您已将其从非调试代码中删除。

关于c# - 无法调试 wcf-windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4121943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com