问题描述
我在 ubuntu 21.04 上安装了 dotnet core 5。我用 VS Code 创建了一个 webapi 项目,并设法顺利运行。
我在项目中安装了 EF5 并尝试连接到 sql Server 2008
数据库上下文
using Microsoft.EntityFrameworkCore;
namespace Models
{
public partial class Banco : DbContext
{
public virtual DbSet<Cliente> Cliente { get; set; }
public Banco() : base()
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UsesqlServer("Server=<<servidor>>; Database=<<banco>>; User Id=<<user>>; Password=<<senha>>;");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Models.Cliente>()
.HasKey(c => new { c.codcli });
}
}
}
模型
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Models
{
public partial class Cliente
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int codcli { get; set; }
public string nomcli { get; set; }
}
}
控制器
using Microsoft.AspNetCore.Mvc;
using System.Linq;
using System.Data.sqlClient;
using System;
namespace dotnetc_webapi.Controllers
{
[ApiController]
[Route("")]
public class DefaultController : ControllerBase
{
[HttpGet]
public dynamic Get()
{
Models.Banco banco = new Models.Banco();
var cliente = banco.Cliente.Take(10).Select(cli => cli).ToArray();
return new OkObjectResult(cliente);
}
}
}
当使用命令 dotnet watch run 运行项目时,它会打开浏览器,并在尝试连接银行时显示以下错误:
sqlException: A connection was successfully established with the server,but then an error occurred during the pre-login handshake. (provider: SSL Provider,error: 31 - Encryption(ssl/tls) handshake Failed)
在线:var cliente = banco.Cliente.Take(10).Select(cli => cli).ToArray();
我觉得奇怪的是,如果我在没有任何代码更改的情况下使用同一个项目并在 Windows 10 中运行,它可以连接到数据库并正常接收来自客户端的数据,而不是在 ubuntu 中。
我已经尝试过这些程序
我不知道这是不是正确的方法,或者我遗漏了什么。
我只是因为这个项目而依赖Windows,因此我必须使用VM来运行Windows。我很想解决这个问题,只是使用 linux。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)