我一直在尝试解决一个新创建的Windows服务器上的问题,该服务器上的IIS托管了一个从另一个环境复制的ASP.NET应用程序。问题是,当应用程序试图通过实体框架打开连接时,我无法管理连接到数据库。
如果这是偏离主题,所以让我知道,这样我就可以转移到另一个频道,我认为它属于这里,因为似乎具体到EF。
具体来说,我有以下连接字符串:
<connectionStrings>
<add name="ApplicationServices" connectionString="Data Source=LOCALCOMPUTER\SQLEXPRESS;Initial Catalog=xxx;Persist Security Info=True;User ID=yyy;Password=zzz" providerName="System.Data.SqlClient"/>
<add name="MembershipConnection" connectionString="metadata=res://*/App_Code.Membership.Membership.csdl|res://*/App_Code.Membership.Membership.ssdl|res://*/App_Code.Membership.Membership.msl;provider=System.Data.SqlClient;provider connection string="Data Source=LOCALCOMPUTER\SQLEXPRESS;Initial Catalog=xxx;Persist Security Info=True;User ID=yyy;Password=zzz;MultipleActiveResultSets=True;Application Name=EntityFramework"" providerName="System.Data.EntityClient"/>
...
xxx,yyy,zzz当然有正确的值。LOCALCOMPUTER是本地计算机的FDQN,它不在域中
第一个连接字符串用于Microsoft登录库,而第二个连接字符串使用我们代码中的实体框架。
当我浏览到该站点时,我可以成功地访问登录表单,如果我尝试插入错误的密码,我会收到一条消息,说明密码错误,这意味着应用程序设法使用第一个连接字符串检查数据库,但当我插入正确的密码时,代码一尝试创建上下文,我就遇到异常。
基础提供程序打开失败.原因:建立与SQL Server的连接时发生与网络相关的或特定于示例的错误。找不到服务器或无法访问服务器。请验证示例名称是否正确以及SQL Server是否配置为允许远程连接。(提供程序:TCP提供程序,错误:0 -等待操作超时。)
在事件查看器中,它告诉我用户已通过Authentication Type: Forms
进行身份验证,我认为这意味着身份验证系统(使用 ApplicationServices 连接字符串的系统)正在工作,堆栈跟踪确认当我尝试在代码中使用EF时发生错误,这意味着已成功使用DB检查用户凭据
请注意:
- Web应用程序可在其他环境中运行
- 我可以通过SSMS使用凭据连接到sql server
- 我已将一个本地Windows帐户分配给应用程序池,该帐户也可以访问数据库,并尝试更改为
Integrated Security=SSPI
- .Net 3.5和.Net 4.8都已安装
数据库位于本地计算机上,并且已从另一台计算机的转储中恢复,其用户已被Map,为了排除问题,我使用dbowner
datawriter
和datareader
对它进行了充分的授权
我一直试图解决这个问题,因为几天来检查类似的问题,所以无济于事,我真的不知道如何继续下去,有什么我可以做的问题进行故障排除?
1条答案
按热度按时间qmelpv7a1#
很抱歉,我已经找到了答案,它是特定于代码库的。显然,连接字符串被忽略了(尽管完全可用),而数据被保存在表中。
不得不联系以前的开发人员来找出答案,我猜这是一个很好的例子,说明了编写代码的重要性
我会关闭线程,感谢所有谁试图帮助