Error when using MSMQ on a local computer

HiI am trying to test an application without using a server. I only use one computer with Windows XP Prof. installed. But it doesn’t work.I have a web service (.NET application) executing on the local computer, which sends a request to a message queue named “InToNavision” on the same computer. The web service works just fine, and I can see that the messages are written to the “InToNavision”. A simple Navision application is going to read this message from the queue and write an answer in the queue “OutFromNavision”. When debugging the code, it seems that reading process works fine, but when the last row is going to execute, I got the error message:“Could not call them member Send. MSMQMessage returned following message: “There is no intern Message Queuing Certificate for the user. “ (I have translated those 2 rows from Swedish)The last row looks like this:OutMsg.Send(0); The OutMsg is an automation, ‘Navision Communication Component version 2’.OutMessage.Of course there are more rows before this, but they seem to execute without any problems. I got the whole code from msdn, it is a copy from theirs. What can I do to make it work? Please help me. That is my first trial to use MSMQ, and I am not very good in certificates. I really hope anyone can help me.

You shouldn’t have problems related to certificates in Windows xp. I think XP doesn’t support them. Navision user has write permissions in queue? Can you past your code?

Hi

Thank you for the answer, because I have tried a lot of things during severals days, but the problem
still is there.

I have configured the outgoing queue, so all users can write, read….the queue.
And there is no mark under properties for “FromNavision”.
I think though, it is a little bit of strange, that the web service (.NET application) can write the question to
“ToNavision” without any problems, but not the Navision application.

Regards

Moan

Here is the code:

CREATE(MQBus);
CREATE(CC2);
CREATE(XMLDom);
CC2.AddBusAdapter(MQBus,1);
MQBus.OpenReceiveQueue(‘Merkurius\private$\tonavision’,0,0);

CC2::MessageReceived(VAR InMessage : Automation “’’.IDISPATCH”)

//get the message
InMsg := InMessage;
Ins := InMsg.GetStream();

//load the message into an xml document and find the node
XMLDom.load(Ins);
XMLNode := XMLDom.selectSingleNode(‘string’);

//Open the response queu and create a new message
MQBus.OpenWriteQueue(‘Merkurius\private$\fromnavision’,0,0);
MQBus.SenderAuthenticationLevel:= 2;

//CREATE(OutMsg);
OutMsg := CC2.CreateoutMessage(‘Message queue://Merkurius\private$\fromnavision’);

//OutMsg := InMsg.CreateReply();
OutS := OutMsg.GetStream();

//build the contents of the message
XMLNode.text := UPPERCASE(XMLNode.text);

//fill the message
XMLDom.save(OutMsg.GetStream());

OutMsg.Send(0); //HERE I GOT THE ERROR MESSAGE

If Merkurius is yours local computer, instead of writing “Merkurius” can you try using only “.\private$\FromNavision” .

Also try to remove line “MQBus.SenderAuthenticationLevel:= 2;”

Can you try that?

THANK you, Nuno Maia!!!

You have saved my life"

It was then line: MQBus.SenderAuthenticationLevel:= 2; that was the problem!!

I should have mistaken that line by my self, but I was just staring at the certificate…

Thanks again! I hate to get error message from the automations.

Now when I execute the web service first and then the Navision application, I get no error!

(I had already tested to write: “.\private$\fromnavision\”, but I did not help. I should have written that.)

I still have a little question:

The line above (MQBus.SenderAuthenticationLevel…),

I suppose that line should be put back in the code, when the application executes on the the server ?

I am going to use a Nas server, which will execute a codeunit, when a web service had sent a question and then send back an answer,

depend on the question.

Best regards

Moan

You don’t need that line. Honestly I don’t know what is supposed to do that piece of code.
I only have seen that line in a Microsoft White papper, but the line of code was MQBus.SenderAuthenticationLevel:= 3 and not MQBus.SenderAuthenticationLevel:= 2.

It is ok. Perhaps I will try to find out little more of that later, to see if it affect our customers security in any way in relation with web service.

Finally I can tell you, that now my web service and Navision application work just fine together! And finally, I can go on again.

Thanks a lot again!

[:D]

you are welcome