[Mono-bugs] [Bug 457069] New: Page. LoadControl fails if path case does not match class namespace

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sat Dec 6 16:52:34 EST 2008


           Summary: Page.LoadControl fails if path case does not match class
           Product: Mono: Class Libraries
           Version: 2.0.x
          Platform: Macintosh
        OS/Version: Mac OS X 10.5
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Sys.Web
        AssignedTo: mhabersack at novell.com
        ReportedBy: seanhig at geminibay.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: Community User

Description of Problem:

The 2.x series was always failing on my Page.LoadControl().  I was getting a
compilation error:
System.Web.Compilation.CompilationException: Exception of type
'System.Web.Compilation.CompilationException' was thrown.
  at System.Web.Compilation.AssemblyBuilder.BuildAssembly
(System.Web.VirtualPath virtualPath, System.CodeDom.Compiler.CompilerParameters
options) [0x00000] 
  at System.Web.Compilation.AssemblyBuilder.BuildAssembly
(System.Web.VirtualPath virtualPath) [0x00000] 
  at System.Web.Compilation.BuildManager.BuildAssembly (System.Web.VirtualPath
virtualPath) [0x00000] 
  at System.Web.Compilation.BuildManager.GetCompiledType (System.String
virtualPath) [0x00000] 
  at System.Web.UI.TemplateControl.GetTypeFromControlPath (System.String
virtualPath) [0x00000] 
  at System.Web.UI.TemplateControl.LoadControl (System.String virtualPath)

Steps to reproduce the problem:
1. use Page.LoadControl to load a control where the relative path to the
control represents a segement of the namespace (ie.
<namespace>.Controls.MyControl.ascx, where MyControl.ascx is in a /controls
folder in the web)

2.  If you pass the control path to LoadControl using a different case then the
namespace segement (ie. "/controls/MyControl.ascx") , you will throw the above
exception, if the string you pass matches the namespace case (i.e.
"/Controls/MyControl.ascx"), it will work fine. 

It matters not what the case of actual folder is on the file system.

Additional Information:

I would never have thought of this if not for the fact that another LoadControl
usage was having pathing issues, and during resolution of that bug, I was
getting vpath errors.  Since this was a compilation error, and I knew the path
was correct, the bizarre thought that the compilation was relying on folder
pathing to complete the relative namespace of the control came to me.  I tested
this wacked hypothesis by changing the folder case passed to the LoadControl to
match the namespace, and suddenly, it started working.

Methinks someone is using the wrong string somewhere down there in LoadControl.

As usual, this is/was never a problem with the MS runtime.

Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.

More information about the mono-bugs mailing list