2009-04-09 47 views
3

我寫了一個Web服務,它從消息隊列中讀取。 這在卡西尼下工作正常。權限錯誤從ASP.Net Web服務訪問MSMQ

隊列不存在,或者您沒有足夠的權限來執行該操作:

現在,我已經部署了下IIS服務,我當服務嘗試訪問隊列收到一條錯誤消息。

我已將IIS虛擬目錄上的匿名訪問用戶設置爲我自己的域帳戶,該帳戶是本地計算機上管理員組的成員。我已授予此同一用戶在隊列上的完全權限,以及NETWORK SERVICE和ASPNET。

我仍然收到相同的錯誤信息。

我也嘗試禁用虛擬目錄的匿名訪問,並使用我自己的登錄信息連接到服務 - 無濟於事。

任何有關這個問題的幫助將不勝感激!


我也嘗試過各種組合:

和 藉助具有在隊列中完全權限testUsr。我在C:\

+0

我也嘗試的各種組合: <認證模式= 「視窗」/> 和 <身份冒充= 「真」 的userName = 「myXPpc \ testUsr」 密碼= 「密碼1」/> 利用具有testUsr隊列上的完全權限。我已經爲C:\ – RobD 2009-04-09 15:54:27

回答

5

上的MSMQ存儲文件夾中爲用戶和ASPNET添加了權限。我對此問題的理解是,嘗試執行代碼的進程在IIS下運行時與在Cassini下運行的帳戶不同。

問題是,無論我模擬哪個用戶 - 即使用戶是本地和域管理員組的成員,並且此用戶對隊列擁有完全權限,我也總是收到相同的錯誤消息。即幾乎不可能給用戶分配更多的權利。

事實證明,在使用隊列,而不是一個路徑名(MYMACHINE \ QUEUENAME)一FORMATNAME已經解決了這個問題...

FORMATNAME:DIRECT = OS:MYMACHINE \ myQueue中

我不確定爲什麼會出現這種情況。閱讀表明,當使用路徑名時,有一個AD查找的必要性,雖然我認爲我一直在測試的用戶應該有權執行此操作,但可能會有一些缺失。

然而,眼前的問題已經解決了,這對我來說已經足夠好了。

+0

上的MSMQ存儲文件夾中的用戶和ASPNET添加了許可。 MSDN文檔對此很模糊。您需要在開始時逐字包含「Formatname:」部分! – geedubb 2015-01-22 15:11:03