我最近在我的 Web 应用程序中遇到了以下错误。
页面“ControlName.ascx”不能使用用户控件“OtherControl.ascx”,因为它在 web.config 中注册并与页面位于同一目录中。
虽然我能够通过移动控件并将其注册到页面中来修复错误,但我很好奇为什么会引发错误。
这显然是按照此处所述的设计设计的(黄色块向下 3/4),但我的问题是为什么?通过在 中注册控件Web.Config
并将其放置在同一目录中,您可能会遇到什么问题?
我最近在我的 Web 应用程序中遇到了以下错误。
页面“ControlName.ascx”不能使用用户控件“OtherControl.ascx”,因为它在 web.config 中注册并与页面位于同一目录中。
虽然我能够通过移动控件并将其注册到页面中来修复错误,但我很好奇为什么会引发错误。
这显然是按照此处所述的设计设计的(黄色块向下 3/4),但我的问题是为什么?通过在 中注册控件Web.Config
并将其放置在同一目录中,您可能会遇到什么问题?
也许这是一个动态编译的问题。默认情况下,web.config 中“编译”元素的“批处理”属性为 true。像这样的东西:
<compilation defaultLanguage="c#" debug="false" batch="true" targetFramework="4.0" />
使用 batch="true",每当必须在目录中编译控件时,服务器都会编译其目录中的所有控件(一切?)。
我会说 web.config 声明的控件的编译方式与其他控件的编译方式不同(在另一个 dll 中,另一个目录?)因此,将 web.config 声明的控件和其他控件混合在同一目录中,一些引用其他控件会导致重复编译和 dll 冲突。