数据库问题从VS Development Server迁移到IIS7

时间:2009-06-24 18:49:55

标签: sql-server linq iis-7

我有一个项目我试图在IIS7而不是Visual Studio开发服务器上运行。一切都适用于VS Development Server,但是当转移到IIS7时,它似乎无法从数据库中读取任何内容,但是没有给出数据库错误,相反,它给出了我试图从数据库获取的信息的NullReferenceException 。如果重要的话,该项目使用Linq从数据库中获取信息。另外,这是我的连接字符串。我试过搞乱它无济于事。

     <connectionStrings>
       <add name="MyProjectConnectionString" connectionString="DataSource=MY-PC\SQLEXPRESS;Initial Catalog=MyProjectsDB;Integrated Security=True" providerName="System.Data.SqlClient"/>
     </connectionStrings>

系统信息:运行在Vista Business,SQL Server 2008 Express上的IIS7,它可以与Visual Studio开发服务器和SQL Server 2008一起使用。感谢任何输入!

5 个答案:

答案 0 :(得分:0)

确保用户IIS正在运行,因为它具有连接到数据库的权限。检查应用程序事件日志以查看是否存在“无法连接”事件。我怀疑你的NullReferenceException实际上是尝试使用失败的SQL连接。

答案 1 :(得分:0)

这是一个安全问题。您可以尝试使用SQL Server用户/密码或授予IIS用户对该数据库的访问权限。 IIS用户可能是NETWORK SERVICE

答案 2 :(得分:0)

更改数据源,使其指向服务器,而不是您自己的计算机,或者只使用“。\ SQLEXPRESS”作为数据源。

要使用集成安全性,您可能需要在数据库中添加网络帐户作为用户。或者,您可以使用SQL Server安全性,为您在数据库中设置的用户指定用户名和密码。在connectionstrings.com,您可以找到有关如何编写不同连接字符串的示例。

您获得空引用异常的事实表明您正在捕获代码中的异常并忽略它。如果你这样做,这是一个非常糟糕的做法。错误可能会在您没有注意到的情况下发生,如果您发现错误,则不会发现任何错误的线索。

答案 3 :(得分:0)

您可以执行以下操作之一:

  1. 将App Pool标识更改为具有SQL权限的用户
  2. 更改为SQL身份验证(用户名+密码)
  3. 将domain \ webserver $ machine帐户添加到SQL,例如BOBSGARAGE \ WEBSERVER1 $
  4. 启用pass through authentication,以便将凭据从浏览器传递到SQL Server
  5. 在同一台服务器上托管SQL和IIS(不好主意)

答案 4 :(得分:0)

从您的连接字符串“connectionString =”DataSource = MY-PC \ SQLEXPRESS; Initial Catalog = MyProjectsDB; Integrated Security = True“看起来您将遇到集成安全设置的问题。当您移动时从本地到其他地方的数据库,aspnet用户通常不会像在本地计算机上那样直接访问数据库。

在您要迁移到的服务器上,确保在SQL Server上设置了混合模式,在SQL Server上为您尝试连接的数据库创建用户和密码,并确保它们具有添加,编辑,删除等等的持久性等级。

现在返回到web.config的连接字符串并更改连接字符串以使其具有以下内容:connectionString =“Data Source = myServerAddress; Initial Catalog = myDataBase; User Id = myUsername; Password = myPassword;”。

祝你的项目好运。