具有集成安全性的WCF Nhibernate服务=真错误

时间:2009-10-29 17:21:12

标签: wcf security nhibernate service integrated

我正在使用WCF服务(使用Fluent NH实现),它作为Windows服务托管。

我正在使用控制台应用程序来测试呼叫服务方法。

现在,当我在hibernate.cfg.xml中将连接字符串设置为

<property name="connection.connection_string">Server=dev;Initial Catalog=DBTest;Integrated Security=True;</property>

它抛出错误: SqlException: 用户登录失败

但是如果我将连接字符串更改为:

<property name="connection.connection_string">Server=dev;Initial Catalog=DBTest;User Id=twr;Password=manager1;</property>

成功调用服务方法。

虽然所有WCF服务库,托管Windows服务和控制台应用程序仅在我的本地计算机上,

任何人都可以帮助我理解为什么它不适用于Integrated Security = true?

谢谢!

1 个答案:

答案 0 :(得分:4)

Integrated Security = true表示此应用程序将尝试使用您要连接的SQL Server上的“Windows身份验证”模式对自身进行身份验证。该服务在特定用户帐户下运行 - 它将使用该用户的帐户权限登录SQL。

如果您的SQL Server实例不允许该Windows服务的用户帐户登录,您将收到该错误。服务在单元测试中运行的用户很可能与测试控制台应用程序不同。

试试这个 - 运行你的测试控制台应用程序并打开任务管理器。在“流程”选项卡下,查看与您的服务相关联的流程及其运行的用户名。运行您的单元测试框架并记下用户名 - 它们可能不同。

转到SQL Server Management Studio并检查以查看安全性 - &gt;登录是否列出了服务运行的帐户(使用任务管理器找到的帐户)。如果没有,请添加它并授予其权限。