大家早上好,
我遇到了使用SharePoint工作流程项目的问题(C#, VS 2008)并连接到数据库。这是我的数据库连接 字符串:
Data Source=DBSERVER;Initial Catalog=DBNAME;Integrated Security=True;
当我尝试运行以下代码时,出现以下错误...
SqlConnection dbEngine = new SqlConnection(Constants.DBCONNECTION_STRING);
dbEngine.Open();
“用户'DOMAIN \ MACHINE_NAME $'
登录失败我需要做的是传递登录用户的凭据。 我已经开始冒充,但它似乎没有通过 通过。任何建议将非常感谢。
提前感谢您的任何建议,
Scott Vercuski
答案 0 :(得分:1)
Web前端和SQL服务器是否在同一个框中?
如果没有,您将必须设置Kerberos以允许凭据传播。
答案 1 :(得分:1)
出于安全性和连接池原因,任何数据库访问都应作为Windows服务帐户运行。
关于工作流程安全上下文,请参阅:
SharePoint,工作流和安全性 http://cglessner.blogspot.com/2008/09/sharepoint-workflows-and-security.html
声明性工作流程和用户上下文http://blogs.msdn.com/sharepointdesigner/archive/2008/09/28/declarative-workflows-and-user-context.aspx
SharePoint中的安全性和应用程序开发:第一步 工作流程 http://www.microsoft.com/technet/community/columns/secmvp/sv0408.mspx#EACAC
答案 2 :(得分:0)
您不能这样做 - 工作流程不会在用户的上下文中运行。工作流程是异步执行的。仅(HTTP)WebPage-Requests在用户的上下文中运行(如果您启用模拟)。您无法将模拟传递到工作流程。要恢复工作流中的模拟(您不应该这样做),需要用户名和密码或协议转换(过程需要在系统下运行)。
此外,如果您尝试从模拟的用户上下文访问数据库,则您的应用程序会出现严重的设计问题。这会混淆连接池并严重影响性能。这通常是不行的。
不是kerberos问题。该进程尝试访问数据库作为计算机帐户,该帐户会告诉您该进程正在作为网络服务或(win 2008及更高版本)系统运行。