我們有一個問題,我們的Web應用程序通過Microsoft.Xrm.Sdk OrigantizationServicePro未能通過CRM進行身份驗證。這個問題似乎是環境特定的,即調用在我們的DEV Web服務器上工作,但在應用程序升級到我們的系統測試環境時失敗。失敗的代碼如下:CRM OrganizationServiceProxy身份驗證問題
using (var serviceProxy = this.serviceFactory.Impersonate(userProvider.PrincipalUserName).ServiceProxy)
{
var countResult = serviceProxy.RetrieveMultiple(new FetchExpression(query));
int? count = 0;
var entity = countResult.Entities.FirstOrDefault();
if (entity != null)
{
count = (int?)((AliasedValue)entity["activity_count"]).Value;
}
return count.Value;
}
出現在我們的日誌是錯誤:
System.ServiceModel.Security.SecurityNegotiationException:來電者不是由服務認證。 ---> System.ServiceModel.FaultException:由於身份驗證失敗,無法滿足安全令牌請求。 在System.ServiceModel.Security.SecurityUtils.ThrowIfNegotiationFault(消息消息的EndpointAddress目標) 在System.ServiceModel.Security.SspiNegotiationTokenProvider.GetNextOutgoingMessageBody(消息incomingMessage,SspiNegotiationTokenProviderState sspiState) ---內部異常堆棧跟蹤結束---
我有雙重檢查IIS站點和CRM設置的apppool身份。這裏有什麼明顯的我們可能錯過了?
通過仔細檢查IIS和CRM設置的appPool身份來定義您的意思。 – Daryl 2015-03-03 20:33:27
檢查用於Web服務器上應用程序池標識的服務帳戶是否可以與CRM服務器通話(該服務帳戶在CRM服務器上具有系統管理員角色)。還有其他基於CRM LINQ的調用(使用ServiceContext)由我們的Web應用程序生成,沒有問題。我們唯一的身份驗證問題是Web應用程序通過OrganizationServiceProxy和RetrieveMultiple方法查詢CRM的某些調用。 – 2015-03-03 21:24:28
您的系統是否是測試環境IFD? – Daryl 2015-03-04 13:46:47