Sql server 从VS Development Server移动到IIS7的数据库问题

Sql server 从VS Development Server移动到IIS7的数据库问题,sql-server,linq,iis-7,Sql Server,Linq,Iis 7,我有一个项目,我正试图在IIS7上运行,而不是在Visual Studio开发服务器上运行。一切都可以在VS Development Server上运行,但当移动到IIS7时,它似乎无法从数据库中读取任何内容,但不会给出数据库错误,相反,它会对我试图从数据库中获取的信息给出NullReferenceException。项目使用Linq从DB获取信息,如果这很重要的话。另外,这是我的连接字符串。我试过把它弄乱,但没有用 <connectionStrings> &

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

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

系统信息:IIS7在Vista Business、SQL Server 2008 Express上运行,它与Visual Studio Development Server和SQL Server 2008配合良好。谢谢你的意见

确保用户IIS正在以有权连接到数据库的身份运行。检查应用程序事件日志以查看是否存在任何“无法连接”事件。我怀疑您的NullReferenceException实际上是试图使用失败的SQL连接。

这是一个安全问题。您可以尝试使用SQL server用户/密码,或授予IIS用户访问该数据库的权限。IIS用户可能是网络服务

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

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


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

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

将应用程序池标识更改为具有SQL权限的用户 更改为SQL身份验证用户名+密码 将域\webserver$machine帐户添加到SQL,例如BOBSGARAGE\WEBSERVER1$ 启用,以便将凭据从浏览器传递到SQL Server 将SQL和IIS托管在同一台服务器上是个坏主意
从您的连接字符串connectionString=DataSource=MY-PC\SQLEXPRESS;初始目录=MyProjectsDB;integratedsecurity=True看起来您在使用integratedsecurity设置时会遇到问题。当您将数据库从本地移动到其他地方时,aspnet用户通常不会像在本地计算机上那样直接访问数据库

在要移动到的服务器上,确保在SQL server本身上设置了混合模式,在SQL server上为要连接的数据库创建用户和密码,并确保它们具有适当的权限级别以进行添加、编辑、删除等操作

现在回到web.config的连接字符串,并将连接字符串更改为以下内容:connectionString=Data Source=myServerAddress;初始目录=myDataBase;用户Id=我的用户名;Password=myPassword


祝您的项目好运。

您好,我认为NullReference也是一个DB连接错误。我的应用程序的事件日志在哪里?我还没有设置,也不知道默认设置在哪里。但是,我强烈建议创建一个应用程序用户名/密码。这将使它更容易。那么您的连接字符串将是DataSource=MY-PC\SQLEXPRESS;初始目录=MyProjectsDB;用户id=xxx;Password=yyyHi,当您说应用程序用户名/密码时,您是指数据库吗?然后使用SQL Server身份验证而不是Windows身份验证?谢谢否-他的意思是创建一个新的Windows帐户,以该用户的身份运行IIS应用程序,进行匿名身份验证,并为该用户提供对SQL DB的有限访问权限。这就是我们所做的,这是减少SQL注入暴露的一大步。谢谢大家,这涉及到几个问题。但主要是,这是一个安全/权限问题。我刚刚添加了网络服务权限,主要是SQL SERVER和我的数据库。安全性不是一个大问题,因为这是一个本地开发机器。谢谢大家!