首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将.net应用程序移动到新服务器时Server连接错误

问将.net应用程序移动到新服务器时Server连接错误
EN

Stack Overflow用户
提问于 2020-01-21 20:38:11
回答 4查看 1.3K关注 0票数 10

我在一台服务器2008机器上有许多.NET web应用程序,我正试图迁移到Server2019机器上,其中一些应用程序移动后会给我在另一个服务器上连接Server 2016实例带来问题。

我得到的错误是

System.Data.SqlClient.SqlException (0x80131904):在建立到Server的连接时发生了与网络相关的或特定于实例的错误。找不到或无法访问服务器。验证实例名是否正确,以及Server是否配置为允许远程连接。(提供程序: SQL网络接口,错误: 25 -连接字符串无效)--> System.ComponentModel.Win32Exception (87):参数不正确

这是一个.NET核心2.2Web应用程序。(安装在服务器上的.net核心2.2服务器包)连接字符串类似于.net,并使用进行连接。

IIS中的应用程序有一个为该应用程序创建的应用程序池,设置与在旧服务器上运行的应用程序相同:无托管代码,身份设置为域用户“域\ user”。

从新的应用服务器到数据库服务器的Ping工作。作为新服务器上的域用户运行SSMS,可以很好地连接到数据库,并可以通过management查看数据。

所以,我不知道Server2019中是否有什么不同之处在于它试图连接到Server的方式还是什么?我这几天都在胡思乱想。.NET 4.0应用程序在试图连接到同一实例上的其他数据库时也有相同的错误。

奇怪的是,其他一些应用程序运行良好,连接到不同服务器上的不同SQL 2016实例,但它们也是不同的.net版本,就像较早的.NET 4.0 web应用程序,但它们作为应用程序池运行,每个应用程序都有不同的域帐户。

似乎这个服务器上的所有.NET核心或.net 4.0 web应用程序都很难从这个服务器连接到这个数据库实例,但是回到旧的web应用服务器上,它们工作得很好。

还有什么我可以查的吗?

编辑:我发现这个错误实际上是当连接到一个新的Server时,即使是从旧的应用服务器,它仍然会得到相同的错误。我在这个应用程序中有两个连接,所以我认为它是第一个,但实际上它是第二个。因此,这与新的SQL server实例有更多的关系。同样,来自SSMS的连接在这个用户中运行得很好,而不是来自web应用程序。

Edit2:经过更多的测试后,如果混合服务器中有Server2019,这肯定是要做的事情。从2019年应用服务器到2019年db服务器失败。从2008年的应用服务器到2019年的db服务器都失败了。从2019年的应用服务器到2016年的db服务器都失败了。从2008年的应用服务器到2016年的db服务器都成功了。

编辑3:我觉得我快疯了。其中一个应用程序,我试图将ASPNETCORE_ENVIRONMENT更改为Development,以便在屏幕上看到更详细的错误,因此我将appsettings.Development.json设置为与appsettings.Production.json完全相同,然后连接工作!将其切换回生产,它将再次获得错误。整个文件是完全相同的文本。那又有什么意义?我甚至尝试显式地将环境变量设置为Production,而不是让它将其作为默认设置。

编辑4:我已经解决了我现在遇到的一半问题。不管出于什么原因,我从一张电子表格中复制的连接字符串中包含了疯狂的隐藏字符,这就是为什么它说sql服务器不存在。我在任何编辑器中都看不到它们,只有通过VS代码比较才能找到,它说行不同,但没有看到任何区别,我把它分成了块,找到了点。当我们在WordPad中打开它时,我们发现它是唯一显示它的地方,见下面。

​

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-01-30 15:28:34

问题是由于连接字符串中隐藏的字符造成的。看我的编辑4,剩下的其他问题都是无关的。

票数 5
EN

Stack Overflow用户

发布于 2020-01-21 21:01:07

我确信解决方案是从连接字符串中删除实例名.

代码语言:javascript
复制
"Server=mysqlserver,3050;Database=Idea;Trusted_Connection=True;"

请参考以下问题:question1 & question2

“在指定端口时,没有必要指定实例名称。”

票数 5
EN

Stack Overflow用户

发布于 2020-01-28 20:23:41

尝试使用用于在IIS中配置应用程序的相同AppPool名称在数据库中创建用户。

这里有一个“如何”在数据库中创建用户:https://engram404.net/grant-sql-permissions-to-iis-apppool-user/

对我起作用了。

否则,这里有一个“为什么”会发生:您在connectionString中告诉它将使用可信连接"Trusted_Connection=True;"

如果您不想像前面所描述的那样创建用户,您应该删除Trusted_Connection=True;并使用如下的连接字符串:

Server=mysqlserver\myinstance,3050;Database=Idea;User Id=SetYourUser;Password=SetYourPassword“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59848895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档