我迁移了 asp.net 应用程序(复制粘贴),因为无法访问源代码。 我安装了相同版本的 odbc Mysql 连接器、Mysql 服务器等...
移动并更改连接字符串后,一切就开始了。我登录应用程序(它已经要求连接到数据库,因为它已经显示了用户),但随后我收到此错误:
我已经搜索了整个服务器以查看差异,而且它也是旧代码......
任何人都有想法。我仍然看到的唯一区别是 Windows Server 2016 和 2022,但我不认为这会导致这种行为?
谢谢! 你的文字
只有对标记进行非常有限的更改,您才能尝试修改标记,而无需同时更改标记和页面后面的代码。
在某些情况下,某些标记可以更改,但不会更改太多,并且如果不重新编译该给定页面的页面类(隐藏的代码),通常无法完成对现有控件的任何更改。
这个“强”表明您需要工作并拥有该项目的工作副本,并且其背后的源代码与每个页面配对。
但是,如果后面的代码使用了设置类,那么通常一些连接信息会成为已编译类的一部分,因此需要重新构建源代码才能使此类更改生效。
现在,如果您复制整个网站,并且只复制网站呢? (没有其他修改)。
那么这是可行的,并且该站点应该可以运行。但是,如前所述,某些应用程序设置如果使用,实际上会修改 web.config,但也会生成静态编译类。
此屏幕显示此示例:
那么,当我对上面进行更改时?是的,设置是在 web.config 中保存/更改的,但也有由后面的代码生成的此类:
那么,如果我打开
Settings.Designer.cs
?
然后我现在看到/得到这个(这是该类的一个小代码片段)。
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
[global::System.Configuration.DefaultSettingValueAttribute("Data Source=ALBERTKALLAL\\SQLEXPRESS;Initial Catalog=Test4;Integrated Security=Tru" +
"e")]
public string TEST4 {
get {
return ((string)(this["TEST4"]));
}
}
那么,上面的意思是什么?
如果我在代码中使用该类来代替配置管理器,那么仅更改 web.config 是不够的。
但是,我还会检查更多事情。
首先,您可能想要强制项目以 x32 位运行。
该项目看起来正在使用 ADODB,它是非托管代码,并且不是内置的 .net oleDB 提供程序。 (这有点不寻常)。
因此,您需要安装ADO库和驱动程序。 (我希望情况并非如此,但“openreordset”不是 .net 库,但看起来是使用 ADODB 代替了 ADO.NET。
因此,我会确保该计算机上安装了 ADODB。
另外,原始站点运行的是 MySQL 还是 SQL Server?
因此,请确保安装 MySQL 的 x32 位驱动程序,并安装 ADODB for MySQL 的 oleDB 驱动程序。 (该错误消息表明此处使用的是 ADODB,而不是 ADO.NET)。
请注意,请确保 x32 位的应用程序池在 IIS 上运行。
因此,只要您不更改页面中的标记,而只是将完整的工作文件夹(包括 bin 文件夹)复制到新计算机,那么该网站就应该能够运行。但是,您想要检查 x32 位应用程序池是否正在运行。
因此,您不仅要安装MySQL的ado.net提供程序,还需要安装ADODB提供程序。 (不幸的是)这是一个非托管代码库,并且表明编译和构建时项目的位大小很重要。
因此,请尝试确保网站运行 x32 位。
不仅安装 MySQL 的 .net 提供程序,还安装 ADODB 提供程序(它们有 x32 和 x64 位版本)。
但是,如果在代码隐藏中使用了Settings.Designer.cs。 (或者可能是 vb.net),那么您需要重新编译和重新构建站点,因为该“静态”类将在构建和编译过程中将“连接”值拉入已编译的代码中。这意味着仅更改 web.config 连接实际上是行不通的。