我有一个与ASP.NET并行的简单托管WCF服务,并且很难调试/插入服务。以下是文件。提前谢谢!
的Web.config
<system.web>
<compilation debug="true" targetFramework="4.5.2"/>
<httpRuntime targetFramework="4.5.2"/>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="mexBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
<service name="WCF_TestService.TestService" behaviorConfiguration="mexBehavior">
<endpoint address="" binding="basicHttpBinding" contract="WCF_TestService.ITestService"></endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
ITestService.cs
namespace WCF_TestService
{
[ServiceContract]
public interface ITestService
{
[OperationContract]
string GetMessage(string name);
}
}
TestService.svc.cs
断点在return
上设置,提示消息为The breakpoint will not currently be hit. No symbols have been loaded for this document
namespace WCF_TestService
{
public class TestService : ITestService
{
public string GetMessage(string name)
{
return $"Hello {name}";
}
}
}
客户端
客户端是控制台应用程序。
namespace Client
{
class Program
{
static void Main(string[] args)
{
ServiceProxy.TestServiceClient client = new ServiceProxy.TestServiceClient();
Console.WriteLine(client.GetMessage("John Smith"));
Console.ReadLine();
}
}
}
答案 0 :(得分:1)
根据您对同一解决方案中的两个项目的评论以及WCF不是自托管的,您需要将解决方案配置为具有多个启动项目。
在解决方案资源管理器中,选择解决方案,右键单击并选择属性。在弹出窗口中展开Common Properties选项,然后单击Startup Project。单击Multiple Startup Projects并选择您的项目和构建操作。设置适当的顺序(在本例中为WCF)
另外,请不要忘记将控制台应用程序的端点地址更改为指向运行时运行wcf项目的相应IIS端口,为调试设置配置转换可能符合您的最佳利益,并且你不会经常在你的配置中切换它们。
如果您创建控制台项目的唯一原因是要与您的WCF服务进行交互以进行测试,那么我建议您改用WCF Test CLient。它应该默认安装在任何VS实例上。
答案 1 :(得分:0)
也许这个回答与此主题相同。
您需要将调试器附加到运行wcf服务的进程。
如果在iis中你需要附加到相应的w3p.exe进程。
如果在独立应用或Windows服务中,请附加到您的exe名称。
在Visual Studio中,在调试器菜单上,有一个“附加到进程”。打开相关代码,设置断点,然后调用服务,使代码路径执行。
在调试之外,使用具有可切换级别的.net跟踪是了解正在发生的事情的好方法。我通常设置sys internals debugview以突出显示错误和警告,并在运行代码或测试时不断运行它。工作时我的周边视觉中的彩色线条发现问题。
尝试与系统管理员一起运行Visual Studio。也许你发现了错误的进程,或者运行的版本不是调试版本。
<强> ALTERNATIVE 强>
您可以在两个项目中单击右键,然后单击“调试” - &gt; “开始新实例”。 Visual Studio以调试模式启动两个项目。