MSMQ 跨服務器讀寫隊列的“消息隊列系統的訪問被拒絕”的解決方案


轉:http://m.blog.csdn.net/blog/2000killer/8904852

最近項目中需要跨服務器對消息隊列進行讀寫,開始在單獨開發機器上進行Queue的讀寫沒問題。但是部署后,在服務器上創建的Queue開發者的 機器只能寫數據而不能讀數據。.net給出的錯誤是“對消息隊列系統的訪問被拒絕”,也就是說拒絕訪問隊列沒有相關權限,我給Everyone和 ANONYMOUS LOGON賦予全部權限都無法解決(正常情況下可以解決此問題)。經過多次google和嘗試現將解決辦法匯總如下:

一. 服務部署情況說明

1. 在window 2008r2開發服務器上安裝並創建消息隊列

2. 在window 7開發者機器上向開發服務的消息隊列讀寫數據


二. 問題解決辦法

1. 服務器端

    • 服務器上消息隊列權限設置:給ANONYMOUS LOGON賦予所有權限;

    • 修改服務器的注冊表,允許非驗證客戶端訪問


2. 開發 端 

設置消息隊列路徑為:


隊列示例代碼如下:

 

public static class MsmqQueue
    {
        private static MessageQueue queue = null;
        static MsmqQueue()
        {
            queue = new MessageQueue(@"Formatname:DIRECT=tcp:192.168.1.200\private$\OrgMngUserOprtLog");
        }

        public static void SendMessage(DTO message)
        {
            Message msg = new Message 
            {
                Body = message,
                Formatter = new XmlMessageFormatter(new Type[] { typeof(DTO) })
            };

            queue.Send(msg);
        }

        public static void ReceiveMessage()
        {
            queue.Formatter = new XmlMessageFormatter(new Type[] { typeof(DTO) });
            Message msg = queue.Receive();
            var ret = msg.Body as DTO;
        }

        public static void Close()
        {
            queue.Close();
            queue.Dispose();
        }
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM