服务器迁移asp.net应用程序导致COMException

问题描述 投票:0回答:1

我迁移了 asp.net 应用程序(复制粘贴),因为无法访问源代码。 我安装了相同版本的 odbc Mysql 连接器、Mysql 服务器等...

移动并更改连接字符串后,一切就开始了。我登录应用程序(它已经要求连接到数据库,因为它已经显示了用户),但随后我收到此错误:

COMException

我已经搜索了整个服务器以查看差异,而且它也是旧代码......

任何人都有想法。我仍然看到的唯一区别是 Windows Server 2016 和 2022,但我不认为这会导致这种行为?

谢谢! 你的文字

  • 检查了相同版本的连接器、mysql 等
  • 检查所有这些应用程序的配置(如果可能)
mysql asp.net connection
1个回答
0
投票

只有对标记进行非常有限的更改,您才能尝试修改标记,而无需同时更改标记和页面后面的代码。

在某些情况下,某些标记可以更改,但不会更改太多,并且如果不重新编译该给定页面的页面类(隐藏的代码),通常无法完成对现有控件的任何更改。

这个“强”表明您需要工作并拥有该项目的工作副本,并且其背后的源代码与每个页面配对。

但是,如果后面的代码使用了设置类,那么通常一些连接信息会成为已编译类的一部分,因此需要重新构建源代码才能使此类更改生效。

现在,如果您复制整个网站,并且只复制网站呢? (没有其他修改)。

那么这是可行的,并且该站点应该可以运行。但是,如前所述,某些应用程序设置如果使用,实际上会修改 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 连接实际上是行不通的。

© www.soinside.com 2019 - 2024. All rights reserved.