2010-02-18 93 views
0

我用Visual Studio 2008 sp1创建了一个ASP.NET网站,并且在我使用SQL连接的代码中实现了SQL Server 2008中的一个数据库。它的所有内容都非常棒,但是我想在IIS7中部署网站(Windows 7 )这是地狱发现如何做到这一点 - (我添加了一个虚拟目录,并将其转换为一个应用程序,然后它没有告诉我我得到的错误之前,我将它复制到inetpub \ wwwroot并将其转换到应用程序)。这样做后,我试图从IIS7运行它,但它只是不断向我显示一个错误,它在命令sqlconnection.open()中得到,当我从Visual Studio运行网站时,它很好用。我该如何解决这个问题?从IIS7打开SQL连接?

我使用下面的连接字符串:“数据SourceEDI-PC \ SQLEXPRESS;初始目录=的SyncMaster;集成安全性=真”

我的IIS7是在同一台计算机上的SQL Server,还等什么exextly我必须做些什么才能使它工作?

+0

你介意告诉我们错误信息是什么意思吗? – 2010-02-18 14:26:29

+0

另外,这个问题可能会在http://serverfault.com/上得到更好的答案。 – 2010-02-18 14:28:32

回答

2

连接字符串可能看起来像这样...

<add name="ConnectionString" 
    connectionString="Data Source=servername; 
         Initial Catalog=dbname; 
         Integrated Security=True" 
    providerName="System.Data.SqlClient" /> 

占IIS下运行,网络服务连接,这意味着它使用的窗口。从Visual Studio运行时,它使用可访问SQL服务器的Windows帐户。

创建一个sql用户用作服务帐户,并在连接字符串中指定该信息。这样它将尝试使用您在Visual Studio和IIS中创建的相同帐户进行连接。

即。

<add name="ConnectionString" 
    connectionString="Data Source=servername; 
         Initial Catalog=dbname; 
         Persist Security Info=True; 
         User ID=sqluser; 
         Password=sqruserpassword" 
    providerName="System.Data.SqlClient" /> 
0

当在IIS7(或任何其他IIS)中运行时,与sql server的连接将作为在iis中运行应用程序池的用户。在IIS7中,这通常是NETWORK SERVICE。因此,如果您使用集成安全性,则需要授予此帐户对数据库的访问权限。如果您的SQL服务器实例正在另一台计算机上运行,​​比如SQLSERVER01,并且您的Web应用程序正在您的计算机上运行,​​则您的计算机上的NETWORK SERVICE帐户将被称为YOURMACHINE $,如SQLSERVER01所示。