我有一个 WCF 主机,用于监听主题并处理传入消息。代码如下:
using (ServiceHost host = new ServiceHost(MessagingServiceType))
{
host.Open();
}
MessagingServiceType 看起来像这样:
[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
public class MessagingServiceType : IMessagingService
{
/// <summary>
/// service instance
/// </summary>
private readonly MessagingService service;
/// <summary>
/// Initializes a new instance of the <see cref="MessagingServiceType"/> class.
/// </summary>
public MessagingServiceType()
{
// creating new messaging service
service = new Singleton<MessagingService>();
}
/// <summary>
/// Sends the message.
/// </summary>
/// <param name="messageContent">Content of the message.</param>
public void SendMessage(string messageContent)
{
Message msg = Message.CreateMessage(MessageVersion.Default, string.Empty, messageContent);
service.MessageReceived(msg);
}
}
问题是,当我在单独的测试应用程序上运行它时,一切正常并且所有服务都会收到所有消息。但是,当我采用完全相同的代码并将其放入我的真实应用程序中时,没有收到任何消息。
我的问题很简单:我如何“调试”此服务以查看它出了什么问题以及为什么消息没有被处理?两者之间有什么可比较的吗?
谢谢
最佳答案
当然你的服务不会收到任何东西......只需看看你的代码:
using (ServiceHost host = new ServiceHost(MessagingServiceType))
{
host.Open();
}
当您到达“}”时到底会发生什么? “using”子句中的对象 - 您的 ServiceHost
- 将被释放/处置! ==>不知不觉中,你的服务又消失了......
您需要执行以下操作:
ServiceHost host = new ServiceHost(MessagingServiceType);
host.Open();
Console.ReadLine(); // wait for a ENTER press
host.Close();
不需要大的调试......:-)
关于WCF 不接收消息 - 如何调试 WCF 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2058054/