2014-09-04 29 views
0

我有一個針對Account實體註冊的插件,Assign消息,Post-Operation (stage 40),它必須對相關記錄執行一些魔術。可以忽略插件的模擬設置嗎?

我註冊了Run in User's Context之下的指定ADMINISTRATOR的步驟,因爲魔法需要比用戶通常擁有的更多權限:冒充管理員似乎是正確的行爲方式。

如果我繼續嘗試使用「普通」用戶的插件(我們稱之爲TESTUSER),我看到模擬似乎不「粘」。

假設用戶是這樣的:

ADMINISTRATOR - guid AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA 
TESTUSER  - guid FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF 

這是我在調試插件運行看:

PluginExecutionContext.UserId   -> FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF 
PluginExecutionContext.InitiatingUserId -> FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF 

而反過來插件抱怨與GUID FFFFFFFF-FFFF-用戶FFFF-FFFF-FFFFFFFFFFFF缺少一些特權(這是事實,這正是我設置步驟在不同用戶的上下文中運行的步驟,誰擁有這些特權並且應該負責執行的操作)

我認爲如果我將Run in user context設置爲Calling User以外的其他值,那麼該插件會冒充另一個用戶,我是否錯了?

我沒有包含任何源代碼,因爲我不相信它是相關的(該插件正在工作,直到它因爲缺少權限而被炸燬,因爲在錯誤的用戶下運行...... )

回答

1

作爲替代的插件註冊工具指定的用戶,你可以像下面行來創建新的服務實例,並用它來執行需要完全權限的操作:

IOrganizationService adminservice = serviceFactory.CreateOrganizationService(null); 

所有來電adminservice方法將以管理員權限作爲SystemUser執行。