C# 连接未从WCF与dsn打开

C# 连接未从WCF与dsn打开,c#,wcf,oledb,oledbconnection,dsn,C#,Wcf,Oledb,Oledbconnection,Dsn,这段代码是用WCF编写的。当我从localhost添加引用时,这段代码工作正常,但当从IIS添加服务引用时,它在cn.Open中失败。它不会抛出任何异常,只是挂起在这行中 OdbcConnection cn = new OdbcConnection(); cn.ConnectionString = "DSN=myDsn;Uid=myuid;Pwd=mypassword;"; cn.Open(); // Fails on this line 或者是

这段代码是用WCF编写的。当我从localhost添加引用时,这段代码工作正常,但当从IIS添加服务引用时,它在cn.Open中失败。它不会抛出任何异常,只是挂起在这行中

        OdbcConnection cn = new OdbcConnection();
        cn.ConnectionString = "DSN=myDsn;Uid=myuid;Pwd=mypassword;";
        cn.Open(); // Fails on this line

或者是否有其他方法可以使用C中的dsn获取数据源名称?

确保dsn是作为系统dsn而不是用户dsn创建的。如果它是作为用户DSN创建的,则IIS服务用户将无权访问它。

创建DSN时,您选择了使用网络登录ID的Windows NT身份验证还是使用用户输入的登录ID和密码的SQL Server身份验证?创建DSN时使用的驱动程序?不是Windows身份验证,它的SQL server身份验证…SQL本机客户端..是的,如果我使用直接连接字符串,它可以工作。它甚至可以从控制台工作,但不能从WCFConsole和在不同用户上下文下运行的WCF工作。使用连接字符串而不是DSN表明存在一些权限问题,可以防止WCF用户上下文访问DSN。没有更多的细节,就不可能说出来。为什么连接字符串不够?