【发布时间】:2018-12-02 05:40:59
【问题描述】:
我一直在尝试更新与 Crystal Reports 交互的 WCF 项目,以使其通过 Windows 身份验证连接到 MS SQL Server。 它是一个 WCF 项目,但作为 Windows 服务而不是通过 IIS 运行。
我正在使用SimpleImpersonation 进行模拟步骤。 本质上,如果在传入的 SOAP 请求中提供了正确的值,包括 IntegratedSecurity=true,它会模拟另一个用户并尝试使用 IntegratedSecurity 登录。
我的代码如下所示:
using (Impersonation.LogonUser(domain, username, password, LogonType.NewCredentials)) {
reportDocument.Execute();
}
我知道模拟是有效的,因为我在using 语句之前和之后打印了System.Security.Principal.WindowsIdentity.GetCurrent().Name,并且看到用户名在using 之后更改为我想要的。
我已经尝试了每个不同的LogonTypes,但我得到了相同的结果。
我通过调用Execute() 收到Database logon failed 错误消息。
但是,如果我以我试图模拟的帐户启动网络服务,我可以正确连接到数据库。
我的问题是:
- 模拟是否按我预期的方式工作?难道我做错了什么? (根据文档,它看起来不像)
- 我需要对适用于 .NET 的 Crystal Reports 运行时进行不同配置吗?
【问题讨论】:
标签: .net windows wcf crystal-reports impersonation