“基类包括字段,但其类型与控件的类型不兼容”的解决方法

程序在VS中运行正常,但发布后出现如下提示。
 

“/”应用程序中的服务器错误。

 

分析器错误

说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。

分析器错误信息: 基类包括字段“SuperMarket1”,但其类型(Supermarket_SuperMarket)与控件(ASP.supermarket_supermarket_ascx)的类型不兼容。

源错误:


行 27: </div>
行 28: <div id="main_sideColumn">          
行 29:     <uc1:SuperMarket ID="SuperMarket1" runat="server" />
行 30:     <uc2:LeaguelShop ID="LeaguelShop1" runat="server" />  
行 31: </div> 

源文件: /Supermarket/default.aspx    行: 29

 

 

版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42

进过判断,发现原因。
因为在同一个目录Supermarket下,已经有了Supermarket.aspx这个页面,但又添加了Supermarket.ascx用户控件。
在编译前,页面文件和用户控件的cs文件是独立存在的,因此没问题。
编译后cs文件全部打包进dll,两个cs文件的命名空间都是Supermarket_Supermarket,产生了冲突,因此出现了上面这个错误。
将Supermarket.ascx控件改名后,问题解决

 

 

PS:今天我算遇到这个问题了,它就是因为这 个网站里面一个ASPX,与ASCX的命名空间名是一样的去了,所以就会产生这样的错,在开发时,会不出错,因为是分开一个一个的CS,也指向不同的 public partial class edit : System.Web.UI.Page,public partial class edit : System.Web.UI.UserControl,“edit”这个命名空间相同了,开发是因为是分成两个CS,但发布的时候,他们都会被封装到 DLL里面,就形成了是相同的命名空间:edit,会使得网站报错的。所以把其中一个改成另外一个唯一的命名空间就可以了。如把ASCX的命名空间改了:

public partial class newshow : System.Web.UI.UserControl   ,页面里的HTML代码也要改一处:<%@ Control Language="C#" AutoEventWireup="true" CodeFile="newshow.ascx.cs" Inherits="newshow" %>   :inherits要改成和命名空间一样的名字。。

posted @ 2016-05-26 10:48  天启♘  阅读(2451)  评论(0编辑  收藏  举报