Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF服务未处理MSMQ消息_Wcf_Msmq - Fatal编程技术网

WCF服务未处理MSMQ消息

WCF服务未处理MSMQ消息,wcf,msmq,Wcf,Msmq,我有一个WCF Windows服务,用于检查MSMQ消息。 它拾取消息,但似乎没有调用ProcessMSMQMessage事件 你知道为什么吗?我是否正确设置了ProcessMSMQMessage事件?还是我遗漏了什么 我的代码如下。谢谢 WCF服务类 public partial class MyService : ServiceBase { private ServiceHost host; public MyService() { InitializeCompone

我有一个WCF Windows服务,用于检查MSMQ消息。 它拾取消息,但似乎没有调用ProcessMSMQMessage事件

你知道为什么吗?我是否正确设置了ProcessMSMQMessage事件?还是我遗漏了什么

我的代码如下。谢谢

WCF服务类

public partial class MyService : ServiceBase
{

  private ServiceHost host;

  public MyService()
  {
    InitializeComponent();
  }

  protected override void OnStart(string[] args)
  {
    string queueName = ConfigurationManager.AppSettings["ProcessMsgQueueName"];
    if (!MessageQueue.Exists(queueName))
    {
      MessageQueue thisQueue = MessageQueue.Create(queueName, true);
      thisQueue.SetPermissions("Everyone", MessageQueueAccessRights.ReceiveMessage);
    }

    try
    {
      Uri serviceUri = new Uri("msmq.formatname:DIRECT=OS:" + queueName);

      // communicate to MSMQ how to transfer and deliver the messages
      MsmqIntegrationBinding serviceBinding = new MsmqIntegrationBinding();
      serviceBinding.Security.Transport.MsmqAuthenticationMode = MsmqAuthenticationMode.None;
      serviceBinding.Security.Transport.MsmqProtectionLevel = System.Net.Security.ProtectionLevel.None;

      serviceBinding.SerializationFormat = MsmqMessageSerializationFormat.Binary;

      host = new ServiceHost(typeof(MyService.Service1)); // add watcher class name
      host.AddServiceEndpoint(typeof(MyService.IService1), serviceBinding, serviceUri);
      host.Open();
    }
    catch (Exception ex)
    {
      EventLog.WriteEntry("SERVICE" + ex.Message, EventLogEntryType.Error);
    }
  }

  protected override void OnStop()
  {
    if (host != null)
     host.Close();
  }
}
IService1合同

[ServiceContract(Namespace = "MyService")]
[ServiceKnownType(typeof(Events.Dashboard_Message))]
public interface IService1
{
  [OperationContract(IsOneWay = true)]
  void ProcessMSMQMessage(MsmqMessage<Events.Dashboard_Message> msg);
}
[ServiceContract(Namespace=“MyService”)]
[ServiceKnownType(类型(Events.Dashboard_Message))]
公共接口IService1
{
[运营合同(IsOneWay=true)]
无效进程MsmqMessage(MsmqMessage消息);
}
服务1类

public class Service1 : IService1
{
  [OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
  public void ProcessMSMQMessage(MsmqMessage<Events.Dashboard_Message> msg)
  {
    string msgName = msg.GetType().Name;

    // send to eventlog
    EventLog.WriteEntry("MyService", msgName);  
  }
}
公共类服务1:IService1
{
[操作行为(TransactionScopeRequired=true,TransactionAutoComplete=true)]
公共无效进程MsmqMessage(MsmqMessage消息)
{
字符串msgName=msg.GetType().Name;
//发送到事件日志
WriteEntry(“MyService”,msgName);
}
}

终于让它工作了

问题出在IService1合同中。需要添加
Action=“*”


终于成功了

问题出在IService1合同中。需要添加
Action=“*”


终于成功了!!问题出在IService1合同中。需要将Action=“”添加到下面的[OperationContract(IsOneWay=true,Action=“”)]中我得到了这个。。。哎呀!无法提交您的答案,因为:•声誉低于10的用户在提问后8小时内无法回答自己的问题。您可以在17分钟内自行回答。在此之前,请使用评论或编辑您的问题。没关系。错误消息告诉您发生了什么。用户有时间限制,这取决于您的声誉。与此同时。这个限制已经过期了,现在你可以把答案放到一个新的帖子里了。终于开始工作了!!问题出在IService1合同中。需要将Action=“”添加到下面的[OperationContract(IsOneWay=true,Action=“”)]中我得到了这个。。。哎呀!无法提交您的答案,因为:•声誉低于10的用户在提问后8小时内无法回答自己的问题。您可以在17分钟内自行回答。在此之前,请使用评论或编辑您的问题。没关系。错误消息告诉您发生了什么。用户有时间限制,这取决于您的声誉。与此同时。这个限制已经过期,现在你可以把答案放到一个新的帖子里。
[OperationContract(IsOneWay = true, Action = "*")]