MSMQ messages using HTTP just won’t get delivered #5


Here’s another reason for MSMQ messages to be undelivered over HTTP.


For this customer problem, the network traffic and IIS logs showed that the messages were being correctly POSTed to the web server. The next step should be for the server’s MSMQ web application to accept the HTTP traffic and convert it into a native MSMQ message for the local queue manager. As the message never appeared in the queue, the troubleshooting involved looking in the formatted output from the MSMQLOG.BIN.


In this case it could be seen that the user account handling the HTTP traffic had insufficient permissions to contact the MSMQ web application:



[0]da0.2e4 08/15/2007-16:18:39.531 [mqise IsHttps] Info:https request
[0]da0.2e4 08/15/2007-16:18:39.531 [mqise CheckAccessAllowed] Info:the user for the currect request = IUSR_WEBSERVER
[0]da0.2e4 08/15/2007-16:18:39.531 [mqise TraceAuthInfo] Info:AUTH_USER = <NULL>, AUTH_TYPE = <NULL>
[0]da0.2e4 08/15/2007-16:18:39.531 [mqise CheckAccessAllowed] Info:APPL_PHYSICAL_PATH = c:\inetpub\wwwroot\msmq
[0]da0.2e4 08/15/2007-16:18:39.531 [mqise VerifyWritePermission] ERROR:Access was denied, desired access = 0x2, grant access = 0x0
[0]da0.2e4 08/15/2007-16:18:39.531 [mqise HttpExtensionProc] ERROR:user = IUSR_WEBSERVER denied access, bad_win32_error exception, error = 0x5


 {{“currect” – I’m glad these logs are internal-only…}}


The solution was to modify the Access Control List for the directory so that IUSR_WEBSERVER had appropriate access and then messages started to flow properly.

Comments (6)

  1. eitaporra says:

    running into the same problem.

    Requests show up in IIS logs, but not in MSMQ queue.

    Already granted permission to IUSR, but still not working

  2. MSDN Archive says:

    This is #5 in a series – have you checked out the previous 4 to see if they have any useful troubleshooting steps?

  3. eitaporra says:

    yeah… i checked all of them… from my research, I think I’m SOL and I’ll have to ask MS to decode my msmq log files.

    I can see the requests coming in IIS… just can’t figure why they’re not moving over to MSMQ.

  4. MSDN Archive says:

    I do understand your position – so much useful information is locked away inside the MSMQ log files. Could you elaborate more on the problem – how you are addressing the message, etc?

  5. eitaporra says:

    thanks for your interest in my issues. I wasn’t really expecting you to waste your time on this issue.

    The original architecture was to use WCF and use NetMsmqBinding.

    the services tier would be installed on two servers behind a firewall/loadbalancer.

    The applications tier would also be installed behind the firewall/loadbalancer and would call the services through the load balancer Virtual IP.

    that beins said, I wasn’t able to figure how to configure MSMQ with the firewall/loadbalancer config, so I thought I could use HTTP to "easily" bypass it.

    But now, I’ve wasted so much time researching this that I’m not sure whether I should move forward with this or try to get the firewall/loadbalancer setup properly.

    Anyways, going back to my http issue.

    I decided to write simple MSMQ apps without WCF.

    After some research, I found out that the Messages are stuck in the outgoing queue of my dev box.

    I’m using Vista (so MSMQ4) trying to post to a Win 2003 (MSMQ3). As far as compatibility, I’ve only found (in your great blog) issues with Vista 64bit.

    I’ve tried addressing using IP and servername, both without success.

    It’s a transactional private queue, but I’ve tried with other setups as well (non transactional, public etc)

    The addressing is quite straight forward.

    I see an outgoing queue being created with

    "DIRECT="http://192.168.10.8/msmq/Private$/ImpQueue"

  6. MSDN Archive says:

    I’ll start off with some general problems using transactional queues with a firewall/load balancer. I know you have tried different types of queues but you’ll bump into these when you’ve fixed the current problem.

    Firstly the Vista machine needs to be running IIS+MSMQ/HTTP so that the Windows 2003 server can send back the transactional acknowledgments over HTTP. Messages won’t leave the outgoing queue if the transaction can’t commit.

    Secondly, and similarly, there will be problems in production getting the acknowledgements back through the load balancer:

    899611 How Message Queuing can function over Network Load Balancing (NLB)

    http://support.microsoft.com/default.aspx?scid=kb;EN-US;899611

    In test it will probably work but once you have multiple senders the returning acknowledgements start getting sent to the wrong machine.

    As to what your current problem is, that’s not immediately obvious. Do you see any network traffic returned from the server to the client?

    Are you sending messages to the Default Web Site or an extra website you have configured? Is there a firewall in between for your testing?

    I assume the extra " in the middle of the address is a typo.