繁体   English   中英

ASP.NET WebAPI错误:EntityFramework.dll中发生类型为'System.Data.SqlClient.SqlException'的异常,但未在用户代码中处理

[英]ASP.NET WebAPI error: an exception of type 'System.Data.SqlClient.SqlException' occurred in EntityFramework.dll but was not handled in user code

EntityFramework.dll中发生类型'System.Data.SqlClient.SqlException'的异常,但未在用户代码中处理

附加信息:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 验证实例名称正确,并且已将SQL Server配置为允许远程连接。 (提供者:SQL网络接口,错误:25-连接字符串无效)

每当我调用控制器中编写的任何函数时,都会收到此错误。

控制器(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; }
    }
}

看来您无法连接到SQL Server。 您是否以这种方式检查了连接字符串?

您输入的连接字符串错误!! 您写的数据源= /.SQLEXPRESS ,实际上是数据源= ./SQLEXPRESS ,整个连接字符串应如下所示:

    <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=\.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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM