Олицетворение в Crystal Reports

Я пытался обновить проект WCF, который взаимодействует с Crystal Reports, чтобы он мог подключаться к MS SQL Server через проверку подлинности Windows. Это проект WCF, но он работает как служба Windows, а не через IIS.

Я использую https://github.com/mj1856/SimpleImpersonation, чтобы сделать шаг олицетворения. По сути, если во входящем запросе SOAP указаны правильные значения, включая IntegratedSecurity=true, он олицетворяет другого пользователя и пытается войти в систему с помощью IntegratedSecurity.

Мой код выглядит примерно так:

using (Impersonation.LogonUser(domain, username, password, LogonType.NewCredentials)) {
    reportDocument.Execute();
}

Я знаю, что подражание работает, потому что я напечатал System.Security.Principal.WindowsIdentity.GetCurrent().Name до и после using заявление и увидел, что имя пользователя изменилось на то, что я хочу после using,

Я пробовал каждый из разных LogonTypeно я получаю те же результаты.

Я получаю Database logon failed сообщение об ошибке от звонка Execute(),Однако, если я запускаю веб-службу, работающую под учетной записью, которую я пытаюсь выдать, я могу правильно подключиться к базе данных.

Мои вопросы:

  • Работает ли олицетворение так, как я намереваюсь? Я делаю что-то неправильно? (Не похоже, что это основано на документации)
  • Есть ли в среде выполнения Crystal Reports для.NET что-то, что мне нужно настроить по-другому?

1 ответ

Решение

Оказывается, моя проблема была не с олицетворением, а с драйвером БД. Я нашел комментарий на https://archive.sap.com/discussions/thread/3621859:

Пожалуйста, проверьте, существует ли файл "sqlncli.dll" на сервере или нет? .. не уверен этот файл или какой-либо другой DLL.

Я установил https://www.microsoft.com/en-us/download/confirmation.aspx?id=50402 на сервер, и мой код начал работать автоматически.

Я хотел бы, чтобы сообщения об ошибках, возвращаемые Crystal Reports, были более наглядными, но, по крайней мере, это работает.

Другие вопросы по тегам