3

我很绝望。

我们在 ASP.NET (webforms) 中有一个带有 Framework 2.0 的小项目。我对 UserControl (ASCX) 进行了一些维护。我是我的开发机器,但是当我将文件上传到服务器时,会抛出这个异常:

基类包含字段“MyControl_1”,但其类型(MyControl)与控件类型(ASP.MyControl_ascx)不兼容

我几乎尝试了所有方法:

这仅发生在生产服务器中。我试图将 ASCX 包装在命名空间中:

代码:

namespace MyControl {
   ...
}

澳交所:

Inherits="MyControl.Control"

使用该控件的 ASPX:

<%@Import Namespace="MyControl" %>
<%@ Register Src="Controls/SomeControl.ascx"  TagName="SomeControl" TagPrefix="uc2" %>
<uc2:SomeControlID="Control1" runat="server" />

编译模式没有使用固定的程序集命名,我无法更改。

4

3 回答 3

1

我有一个类似的问题。我找到了解决方法 - 更改用户控件声明。

您的生产服务器可能会运行一个 Web 应用程序。Web 应用程序期望用户控件中的声明具有某种格式。您可能已将基于文件的项目中其他地方构建的用户控件放置到 Web 应用程序中?

CodeBehind="MyControl.ascx.vb"使用 Web 应用程序用户控件(默认情况下) ,您可以获得AppName.MyControl.

使用基于文件的项目,您将获得CodeFile="MyControl.ascx.vb和继承MyControl.

我更改了用户控件中的声明,直到它起作用。看起来您可能需要在进行更改并重新编译后向生产服务器提供新的 dll。

于 2012-11-11T20:51:16.133 回答
0

确保如果您有一个page已经包含任何内容的内容usercontrol将被更新以发布,在这种情况下,您将发布Usercontrol并为两者Page进行预编译dlls

于 2013-03-04T06:14:47.833 回答
0

我去了 OP 提供的页面: https: //support.microsoft.com/en-us/kb/919284?wa=wsignin1.0

第二个建议对我有用:

方法 2:重新排序应用程序中的文件夹

因此,最后,我将所有控件放在同一个子文件夹中,并且效果很好。它可能不是每个人的选择,但值得一试。

于 2015-06-26T15:54:53.000 回答