【发布时间】:2017-11-28 11:34:30
【问题描述】:
我正在尝试通过构建一个基本的 Asp.net MVC Web 应用程序来学习 MVC,该应用程序在 Instances-->v11.0 文件夹中有一个 Sample.mdffile(Sample Database)。 Sql Server 2012 localdb 安装在我的 Windows 10 上。我 能够 使用服务器名称 (localdb)\V11 访问、创建数据库和表(员工) .0 在 SQL Server Management Studio 2017 以及命令提示符中。我正在使用 Windows 身份验证 并使用 local IIS 作为 Web 服务器,但是当我尝试通过 C# 代码(VS 2015)访问相同的服务器时,我收到以下错误:
在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:50 - 发生本地数据库运行时错误。无法创建自动实例。有关错误详细信息,请参阅 Windows 应用程序事件日志
在线:con.Open();
员工控制器:
public class EmployeeController : Controller
{
// GET: Employee
public ActionResult Index()
{
string connectionString = ConfigurationManager.ConnectionStrings["DBACESS"].ConnectionString;
List<Employee> employees = new List<Employee>();
using (SqlConnection con = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("Select Id,Name,City from Employee", con);
cmd.CommandType = CommandType.Text;
if (con.State == ConnectionState.Closed)
{
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Employee employee = new Employee();
employee.EmployeeId = Convert.ToInt32(rdr["Id"]);
employee.Name = rdr["Name"].ToString();
employee.Gender = rdr["Gender"].ToString();
employee.City = rdr["City"].ToString();
employees.Add(employee);
}
}
}
return View(employees);
}
}
网址:
本地主机/WebApp/员工
连接字符串:
<add name="DBACESS" connectionString="server=(localdb)\v11.0;database=Sample.mdf;Integrated Security=True;"
providerName="System.Data.SqlClient"/>
调试的时候发现在执行con.open()之前con对象的ServerVersion属性没有设置并显示错误:
“ServerVersion”引发了“System.InvalidOperationException”类型的异常?
员工模型类:
`public class Employee
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string City { get; set; }
}`
认证方式:
`<system.web>
<authentication mode="Windows" />
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" />
<httpModules>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
</httpModules>
</system.web>`
我已经尝试了堆栈溢出和论坛的各种修复,但没有任何效果。
1) 尝试了其他实例,例如 mssqllocaldb 或 v12.0,但没有成功。
2)在 IIS 中从 ApplicationPoolIdentity 将 identity type 更改为 Local System 但没有成功(实际上尝试了所有可能的方案)
3)在IISDefaultAppPool的Advanced Settings中将Load User Profile设置为True /strong>,但没有成功。
4)在applicationHost.config中设置setProfileEnvironment="true"(但没有成功)
C:\Windows\System32\inetsrv\config
5)Sql Server 配置管理器中的SQL Server Services中没有项目。 这听起来并不奇怪,因为我找到了以下有关 localdb 的信息:
LocalDB 不创建任何数据库服务; LocalDB 进程会在需要时自动启动和停止。应用程序只是连接到“Data Source=(localdb)\v11.0”,LocalDB 进程作为应用程序的子进程启动。在关闭与此进程的最后一个连接后几分钟,该进程将关闭。
6)端口号 1433 在的客户端协议标签中启用TCP/IP Sql Server 配置管理器。此外,我已经创建了自己的入站规则,允许访问 TCP/IP 端口号 1433 和动态端口程序以及 Windows 防火墙。但没有成功.
7)在SSMS-->右击Server--->properties-->Connections > 选项卡 我勾选了允许远程连接到此服务器,但没有成功。
8) 这是我的登录用户映射。 db_owner 和 public 已为此用户启用。 User Mappings
9)服务器角色对于我的登录用户是公共和系统管理员。
10)在SSMS-->右击Server--->properties-->Security 选项卡 我也启用了SQL server 和windows 身份验证模式,但没有成功。
11) 重新安装了 SQL server localdb 但没有任何乐趣。
12)我正在附加 Windows 事件日志文件以获取详细错误。Windows event log file
我是 ASP.net MVC 的初学者。快速帮助将不胜感激。自过去三天以来一直在尝试,但没有任何乐趣。提前致谢。
【问题讨论】:
-
我不认为在连接字符串中正确使用
database属性。我想你想要Initial Catalog,并删除“.mdf”,所以它只是sample。 -
也尝试使用初始目录但没有成功。
-
更改应用程序池以在您的用户帐户下运行以查看它是否有效,但不要永久修复。
-
你能告诉我该怎么做吗?我不知道。
-
按照 Crowcoder 的建议更改连接字符串。使用 sql server 附带的 SQL Server Management Studio (SSMS) 检查连接实例。登录窗口包含连接的实例,请确保您使用的实例与登录窗口中的实例相同。使用资源管理器登录并检查您使用的数据库是否正确。
标签: c# sql-server asp.net-mvc iis ssms