2013-01-10 26 views
1

我正在使用以下博客條目中的代碼將用戶查詢重新分配給其他用戶。我已經在數據庫中運行了DB Update語句(如下面的博客所示)。無法在CRM Web服務AssignRequest上分配離線篩選器錯誤

http://mscrmblogger.com/2009/02/04/crm-4-userquery-privileges-for-system-administrators/

這裏是我的代碼:

CrmAuthenticationToken token = new CrmAuthenticationToken(); 
    token.AuthenticationType = AuthenticationType.AD; 
    token.OrganizationName = Request.Params["orgname"]; 

    CrmService crmService = new CrmService(); 
    crmService.Url = ConfigurationManager.AppSettings["WebServiceUrl"]; 
    crmService.CrmAuthenticationTokenValue = token; 
    crmService.PreAuthenticate = true; 
    crmService.UseDefaultCredentials = false; 
    crmService.Credentials = new NetworkCredentials(username, password, domain); 

    SecurityPrincipal newowner = new SecurityPrincipal(); 
    newowner.Type = SecurityPrincipalType.User; 
    newowner.PrincipalId = new Guid(userid); 

    TargetOwnedUserQuery query = new TargetOwnedUserQuery(); 
    query.EntityId = new Guid(queryid); 

    AssignRequest assign = new AssignRequest(); 
    assign.Assignee = newowner; 
    assign.Target = query; 

    AssignResponse assignResponse = (AssignResponse)crmService.Execute(assign); 

運行此代碼,我得到以下例外情況在crmService.Execute()。

SOAP Exception 
Message: Server was unable to process request 
Inner Detail: 0x8000404ff Cannot assign Offline Filters Platform 

當爲幾個用戶查詢運行此操作時,出現了一些稍微不同的異常。大多數用戶查詢返回上面顯示的上述/第一個異常。一些返回這些不同的SOAP異常。

2) Inner Detail: 0x80048448 Cannot assign address book filters Platform 
3) Inner Detail: 0x80040264 Cannot assign Outlook Filters Platform 

據我所知,我們沒有在我們的CRM產品中使用離線過濾器。我們也沒有使用與Outlook集成相關的任何內容。

自定義ASPX頁面託管在與我們的CRM相同的服務器上,並位於ISV文件夾中。身份驗證,站點地圖自定義和(看似)其他任何部分都能正常工作,以將其作爲自定義頁面進行集成。

有關如何解決此問題的任何提示?

感謝

查詢來獲取UserQueryID,@SystemUserId通過用戶

SELECT [Name], [UserQueryId] 
FROM [UserQueryBase] 
WHERE [OwningUser] = @SystemUserId 
ORDER BY [Name] 

回答

2

所以我們真的需要知道你是如何得到UserQuery的GUID的填充下拉框傳遞英寸如果你能詳細說明它可能會有所幫助。也就是說,我會試着回答。

僅僅因爲您沒有使用Outlook,並不意味着數據庫中不會自動生成視圖和過濾器。

您需要在執行分配之前檢查UserQuery實體,以確保它不是生成錯誤消息的類型之一。您也可能希望記錄這些信息,以便進一步調查。

要檢查的值是userquery.querytype這是一個CrmNumber類型。它將是使用標誌的Enum類型(使用SDK:SDK \ Helpers \ CS \ CrmHelpers \ enums.cs)。使用. HasFlag (integer)檢查屬性是否包含特定類型查詢的標誌。

查看SDK for a list of potential query types

您將希望避免分配專爲脫機使用而設計的查詢。

+0

謝謝。明天我會檢查一下。這裏是我用來獲取UserQuery的代碼。上面貼出的鏈接處於離線狀態,因此以下是Google緩存副本http://webcache.googleusercontent.com/search?q=cache:aaJDANIUFRkJ:mscrmblogger.com/2009/02/04/crm-4-userquery-privileges-for -system-administrators /&hl = en&tbo = d&gl = us&strip = 1 我會發布查詢代碼以獲取上面的UserQuery ID。 –

+0

看起來我可以簡單地修改查詢語句以排除我們不使用的查詢類型,例如OfflineFilters = 16。 –

+0

謝謝。您對QueryType的評論指出了我的正確方向。我從我的SQL查詢中排除了QueryTypes,這是我得到QueryIds的地方。其餘的代碼按預期工作。獲得賞金。 –

相關問題