服务器编译错误:基类包括字段“MyControl_1”,但其类型(MyControl)不兼容(ASP.MyControl_ascx)。

3

我很急。

我们有一个ASP.NET (webforms)的小项目,使用Framework 2.0。我对一个UserControl(ASCX)进行了一些维护。在我的开发机上运行得很完美,但是当我上传文件到服务器时,会抛出以下异常:

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

我尝试了几乎所有方法:

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

代码:

namespace MyControl {
   ...
}

ASCX:

Inherits="MyControl.Control"

使用控件的ASPX页面:

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

编译模式不使用固定的程序集命名方式,我无法更改它。
3个回答

1

我曾经遇到过类似的问题。我找到了解决方法——更改用户控件声明。

您的生产服务器可能正在运行一个 Web 应用程序。Web 应用程序期望用户控件中的声明采用特定格式。您可能已经将在文件项目中构建的用户控件放置到了 Web 应用程序中?

对于 Web 应用程序用户控件(默认情况下),您会得到一个 CodeBehind="MyControl.ascx.vb" 和一个继承自 AppName.MyControl 的控件。

对于基于文件的项目,您会得到一个 CodeFile="MyControl.ascx.vb 和一个继承自 MyControl 的控件。

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


0
请注意,如果您的 页面 已经包含任何 用户控件,则将更新以进行发布。在这种情况下,您需要发布已编译的 UsercontrolPage 两者的 dlls

0

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

第二个建议对我有用:

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

最终,我将所有控件放在同一个子文件夹中,它就正常工作了。这可能不适用于每个人,但值得一试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接