2011-04-29 37 views
4

我的應用程序由兩部分組成:一個將隊列發送到專用MSMQ隊列的Web服務以及一個Windows服務,該服務將隊列插入數據庫並將其插入數據庫。在我的機器,一切都很好,但是當我把它們部署到服務器,權限問題復活了:如何訪問由NETWORK SERVICE帳戶創建的專用MSMQ隊列?

  • 的Web服務,運行IIS內,使用網絡服務帳戶創建隊列。
  • 服務本身,以管理員身份運行,然後無法訪問隊列。

我試圖添加管理員帳戶的權限,但失敗並出現錯誤「訪問被拒絕」。我甚至不能刪除這些隊列。

我該如何解決這個問題? 非常感謝

回答

5

當webservice創建隊列時,應確保它具有適當的訪問權限。如果您正在使用.NET,則可以使用MessageQueue.SetPermissions方法在隊列創建後修改其權限。

此C#代碼將創建一個新的消息隊列,並給本地Administrators組完全控制權:

var messageQueue = MessageQueue.Create(path, true); 
messageQueue.SetPermissions(
    "Administrators", 
    MessageQueueAccessRights.FullControl 
);