MVC中的连接字符串出错

本文关键字:字符串 出错 连接 MVC | 更新日期: 2023-09-27 18:21:28

我正试图从MVC应用程序中的SQL Server数据库表中检索数据。我有以下连接字符串:

<add name="EmployeeContext" connectionString="Data Source=localhost;Initial Catalog=SampleHR;Integrated Security=True" 
     providerName="System.Data.SqlClient"/>

但这给了我以下错误:

无法打开登录请求的数据库"SampleHR"。登录失败。用户"IIS APPPOOL''DefaultAppPool"登录失败。

在我的ActionResult代码中的这一行:

Employee empPersonal = epcontext.Employees.Single(emp => emp.EmployeeID == eid);

我尝试了以下两个连接字符串:

<!-- <add name="Employee_PersonalContext" connectionString ="server=MANASI-HP'MSSQLSERVER; database=SampleHR; integrated security=SSPI;"
     providerName="System.Data.SqlClient"/> -->

<!-- <add name="Employee_PersonalContext" connectionString ="server=MANASI-HP'MSSQLSERVER; database=SampleHR; username=dbo; password=;"
     providerName="System.Data.SqlClient"/> -->

但这两个给了我错误:"基础提供商无法打开。"

我有SQL Server 2012,带有Windows身份验证。我运行了查询"select CURRENT_USER",得到了用户名"dbo"。我没有设置任何密码,正在使用Windows身份验证。我还在IIS服务器上运行该应用程序。

可能是什么问题?如果我必须在这里添加任何代码,请告诉我。

编辑:我转到项目属性,将服务器更改为SQL server而不是IIS,它可以使用以下连接字符串:

<add name="EmployeeContext" connectionString="Data Source=localhost;Initial Catalog=SampleHR;Integrated Security=True;User ID=IIS APPPOOL'DefaultAppPool;Password="
     providerName="System.Data.SqlClient"/>

但没有这个:

<add name="MvcDemoConnectionString" connectionString="Server=MANASI-HP;Database=SampleHR;Integrated Security=true" 
     providerName="System.Data.SqlClient"/>  

我很困惑..:(

编辑2(11月11日):在我开始使用.NET中的MVC应用程序之前,我没有对IIS Manager进行任何更改。只是按照教程中的说明进行操作。我找到了这个关于IIS的页面。

IIS数据源设置

在开始在IIS上构建应用程序之前,我需要做以下任何事情吗?

2015年12月5日:我遵循了这两页上的说明:ASP.NET Web部署和使用IIS 部署数据库

仍然不起作用。

MVC中的连接字符串出错

如果您在IIS中运行应用程序,并且您的连接字符串使用集成安全性,则它将使用的用户是应用程序池运行时的用户。您可以更改应用程序池的运行身份,也可以在连接字符串中提供要使用的windows身份验证用户的用户名和密码(类似于Data Source=localhost;Initial Catalog=SampleHR;Integrated Security=True;User ID=username;Password=password

看起来您已经在IIS中托管了应用程序并允许匿名访问,并且您的连接字符串接受windows身份验证用户。

只要您有这种类型的设置,我建议您在服务帐户而不是AppPoolIdentity下运行IIS应用程序池,并确保您的SQL Server允许服务帐户用户。

要进行测试,请转到"应用程序池"->"高级设置"->并使用您的网络/windows凭据更改"身份"。如果您的帐户可以访问sqlserver,您的问题将暂时得到解决。

注意:我不建议继续在个人帐户下运行您的应用程序。因为一旦您更改密码,就必须再次更改应用程序池标识。

如果不更改,每个应用程序池都有自己的标识。在您的情况下,只需使用SQL Management Studio向数据库SampleHR添加一个新用户,名称为IIS APPPOOL''MyAppPool。您可以在数据库的"Security/users"子节点中找到用户列表。

我只需要在SSMS中授予用户权限。我只是回到ISS中的默认设置,在SSMS中授予用户权限,就这样。有人有其他解决方案吗?