Я пытаюсь получить доступ к службе WCF (MS CRM 2011) и получаю вышеуказанную ошибку. Если я запускаю свою программу-пример из отладчика VS2010 с помощью Cassini или IIS Express, это прекрасно работает. Нет ошибок аутентификации.
Однако, если я публикую сайт на своем локальном IIS 7.5 (под управлением 64-разрядной версии Windows 7), я получаю сообщение об ошибке в строке, которая захватывает идентификатор пользователя CRM (WhoAmIResponse).
Я открыл Fiddler, чтобы сравнить запросы между запуском в отладчике и в IIS. На сайте, работающем под IIS, запрос даже не встречается, поэтому он должен завершиться сбоем, прежде чем пройти так далеко.
Сайт, опубликованный в IIS, имеет свой web.config, установленный для ...
<authentication mode="Windows">
</authentication>
<identity impersonate="true"/>
Сайт работает под предустановленным пулом приложений ASP.NET v4.0, режим интегрированного конвейера, учетная запись ApplicationPoolIdentity.
Вот мой код ...
public class DemoController : Controller
{
public ActionResult Index()
{
ClientCredentials credentials = new ClientCredentials();
credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
var _serviceProxy = new OrganizationServiceProxy(new Uri("http://svr-rex2011-dev/TimeEntry/XRMServices/2011/Organization.svc"),
null,
credentials,
null);
// This statement is required to enable early-bound type support.
_serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
IOrganizationService service = (IOrganizationService)_serviceProxy;
// Display information about the logged on user.
Guid userid = ((WhoAmIResponse)service.Execute(new WhoAmIRequest())).UserId;
SystemUser systemUser = (SystemUser)service.Retrieve("systemuser", userid,
new ColumnSet(new string[] { "firstname", "lastname" }));
// Retrieve the version of Microsoft Dynamics CRM.
RetrieveVersionRequest versionRequest = new RetrieveVersionRequest();
RetrieveVersionResponse versionResponse =
(RetrieveVersionResponse)service.Execute(versionRequest);
ViewBag.FirstName = systemUser.FirstName;
ViewBag.LastName = systemUser.LastName;
ViewBag.Version = versionResponse.Version;
return View();
}
}
Есть идеи? Высоко ценится !!!