我有一个项目我试图在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一起使用。感谢任何输入!
答案 0 :(得分:0)
确保用户IIS正在运行,因为它具有连接到数据库的权限。检查应用程序事件日志以查看是否存在“无法连接”事件。我怀疑你的NullReferenceException实际上是尝试使用失败的SQL连接。
答案 1 :(得分:0)
这是一个安全问题。您可以尝试使用SQL Server用户/密码或授予IIS用户对该数据库的访问权限。 IIS用户可能是NETWORK SERVICE
答案 2 :(得分:0)
更改数据源,使其指向服务器,而不是您自己的计算机,或者只使用“。\ SQLEXPRESS”作为数据源。
要使用集成安全性,您可能需要在数据库中添加网络帐户作为用户。或者,您可以使用SQL Server安全性,为您在数据库中设置的用户指定用户名和密码。在connectionstrings.com,您可以找到有关如何编写不同连接字符串的示例。
您获得空引用异常的事实表明您正在捕获代码中的异常并忽略它。如果你这样做,这是一个非常糟糕的做法。错误可能会在您没有注意到的情况下发生,如果您发现错误,则不会发现任何错误的线索。
答案 3 :(得分:0)
您可以执行以下操作之一:
答案 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;”。
祝你的项目好运。