Sql server .NET核心Ubuntu-SQL Server连接字符串仅接受IP地址

Sql server .NET核心Ubuntu-SQL Server连接字符串仅接受IP地址,sql-server,entity-framework,.net-core,ubuntu-16.04,raspberry-pi3,Sql Server,Entity Framework,.net Core,Ubuntu 16.04,Raspberry Pi3,经过漫长的战斗,我终于用Ubuntu 16.04(UbuntuMate)操作系统在Raspberry Pi 3b上托管了我的web API,但有很多变通方法。其中一个让我很困扰,是关于连接字符串的 设置: 托管在RPi上的Web Api Web Api正在使用EntityFrameworkCore SQL Server Windows 10上的SQL Server Express数据库服务器 netcoreapp2在Windows上为ubuntu.16.04-arm发布 适用于Windows

经过漫长的战斗,我终于用Ubuntu 16.04(UbuntuMate)操作系统在Raspberry Pi 3b上托管了我的web API,但有很多变通方法。其中一个让我很困扰,是关于连接字符串的

设置

  • 托管在RPi上的Web Api
  • Web Api正在使用EntityFrameworkCore SQL Server
  • Windows 10上的SQL Server Express数据库服务器
  • netcoreapp2在Windows上为ubuntu.16.04-arm发布
适用于Windows但不适用于Ubuntu的原始连接字符串:

"Server=MyHostName\\SQLEXPRESS,1433;Database=MyDb;User Id=sa;Password=MyPassword;"
在Ubuntu上工作的连接字符串

"Server=192.168.254.150;Database=MyDb;User Id=sa;Password=MyPassword;"
有什么方法可以让我不依赖Windows的IP地址就可以工作吗


我知道这些都是相当新的版本,所以我决定交叉手指设置一个静态IP地址,以便在可预见的将来不会造成问题。

您可以添加一个
lmhosts
文件,该文件将
netbios名称
映射到
IP地址
。但这只不过是将静态
ip地址
放入连接字符串中。另一方面,它是地图的中心位置。有关设置
lmhosts
文件的信息,请参阅ubuntu手册。不幸的是,我打赌这将需要同样的努力(如果不是更多的话),只要我的IP地址发生变化,我就可以改变
appsettings.json
。谢谢你的主意!我认为这与.NETCore没有直接关系,更多的是与Ubuntu上的DNS和/或NetBIOS名称配置有关。底层的O/S无论如何都会尝试将您提供的主机名解析为IP地址,但如果它没有配置为这样做(就像Ubuntu不是现成的),那么它就不能。如果您试图访问Windows box上的文件共享,或者从Ubuntu访问RDP,您也会遇到同样的问题。通常情况下,如果所有机器都是具有适当目录条目的公司域的一部分,则更容易实现。在家庭或其他临时网络上,这是一种痛苦,但有办法让它使用netBIOS。@ADyson我实际上已经尝试解决了这个问题(目前我只能通过Ubuntu的IP地址ping windows服务器),但当我看到人们在docker上使用.netcore的类似情况时,我改变了方向。目前,即使在
winbind
libnss-winbind
stuff之后,我仍然有ping问题。今天需要退休,明天还会继续。一些上下文:是的,我在家庭网络上,没有DSL连接(只有LTE/无线),在路由器中只能看到有限的配置。你可以添加一个
lmhosts
文件,该文件将
netbios名称
映射到
ip地址
。但这只不过是将静态
ip地址
放入连接字符串中。另一方面,它是地图的中心位置。有关设置
lmhosts
文件的信息,请参阅ubuntu手册。不幸的是,我打赌这将需要同样的努力(如果不是更多的话),只要我的IP地址发生变化,我就可以改变
appsettings.json
。谢谢你的主意!我认为这与.NETCore没有直接关系,更多的是与Ubuntu上的DNS和/或NetBIOS名称配置有关。底层的O/S无论如何都会尝试将您提供的主机名解析为IP地址,但如果它没有配置为这样做(就像Ubuntu不是现成的),那么它就不能。如果您试图访问Windows box上的文件共享,或者从Ubuntu访问RDP,您也会遇到同样的问题。通常情况下,如果所有机器都是具有适当目录条目的公司域的一部分,则更容易实现。在家庭或其他临时网络上,这是一种痛苦,但有办法让它使用netBIOS。@ADyson我实际上已经尝试解决了这个问题(目前我只能通过Ubuntu的IP地址ping windows服务器),但当我看到人们在docker上使用.netcore的类似情况时,我改变了方向。目前,即使在
winbind
libnss-winbind
stuff之后,我仍然有ping问题。今天需要退休,明天还会继续。一些背景:是的,我在家庭网络上,没有DSL连接(只有LTE/无线),只能在路由器中看到有限的配置。