EntityFramework.dll中发生了'System.Data.SqlClient.SqlException'类型的异常但未在用户代码中处理
其他信息:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:SQL网络接口,错误:25 - 连接字符串无效)
每当我调用我在控制器中编写的任何函数时,都会收到此错误。
Controller(Web API 2控制器为空):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Test.DBA;
using Test.Models;
namespace Test.Controllers
{
public class UserAPIController : ApiController
{
ApiDbContext dbContext = null;
public UserAPIController()
{
dbContext = new ApiDbContext();
}
[HttpPost]
public IHttpActionResult InsertUser(User user)
{
dbContext.Users.Add(user);
dbContext.SaveChangesAsync();
return Ok(user.Id);
}
public IEnumerable<User> GetAllUser()
{
var list = dbContext.Users.ToList();
return list;
}
[HttpPost]
public IHttpActionResult DeleteUser(User user)
{
dbContext.Users.Remove(user);
dbContext.SaveChangesAsync();
return Ok(user.Id);
}
[HttpGet]
public IHttpActionResult ViewUser(int id)
{
var student = dbContext.Users.Find(id);
return Ok(student);
}
[HttpGet]
public IHttpActionResult UpdateUser(User user)
{
var std = dbContext.Users.Find(user.Id);
std.Name = user.Name;
//std.startTime = user.startTime;
//std.endTime = user.endTime;
//std.Gender = user.Gender;
//std.Adress = user.Adress;
dbContext.Entry(std).State = System.Data.Entity.EntityState.Modified;
dbContext.SaveChangesAsync();
return Ok();
}
}
}
模型类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Test.Models
{
public class User
{
public int Id { get; set; }
public string Name { get; set; }
//public DateTime startTime { get; set; }
//public DateTime endTime { get; set; }
//public string Gender { get; set; }
//public string Adress { get; set; }
}
}
编辑:添加连接字符串代码
<connectionStrings>
<add name ="Connection"
connectionString="Data Source=\.SQLEXPRESS;Initial Catalog=PonesiLoptu;Integrated Security=True"
providerName="System.Data.SqlClient"/>
</connectionStrings>*
编辑2:添加了ApiDbContext代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using Test.Models;
namespace Test.DBA
{
public class ApiDbContext :DbContext
{
public ApiDbContext() : base("Connection")
{
}
public DbSet<User> Users { get; set; }
}
}
答案 0 :(得分:0)
您似乎无法连接到SQL Server。你是否以这种方式检查了连接字符串?
答案 1 :(得分:0)
您写的连接字符串错误!!你写了 数据源= /.SQLEXPRESS ,实际上它会是 数据源= ./SQLEXPRESS 和整个连接字符串应如下所示:
<connectionStrings>
<add name ="Connection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=PonesiLoptu;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
答案 2 :(得分:0)
有一个小类型,主机名(.
此案例)应该在\
分隔符之前,更改:
<connectionStrings>
<add name ="Connection" connectionString="Data Source=\.SQLEXPRESS;Initial Catalog=PonesiLoptu;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
为:
<connectionStrings>
<add name ="Connection" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=PonesiLoptu;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>