Home > ASP.NET > Cannot convert type ‘ASP.login_aspx’ to ‘System.Web.UI.WebControls.Login’

Cannot convert type ‘ASP.login_aspx’ to ‘System.Web.UI.WebControls.Login’

Well I got this error last week on my ASP.NET 2.0 Web Application im currently developing and thought what is happening here? I haven’t hit this error before?
 
THE ERROR:
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0030: Cannot convert type ‘ASP.login_aspx’ to ‘System.Web.UI.WebControls.Login’

Source Error:

Line 120:        public security_login_aspx() {
Line 121:            string[] dependencies;
Line 122:            ((Login)(this)).AppRelativeVirtualPath = "~/security/login.aspx";
Line 123:            if ((global::ASP.security_login_aspx.@__initialized == false)) {

COMMENTS:
I got this ugly output when I published my Website from within Visual Studio 2005 using the right-click>Publish Website option.  I thought maybe its a clash of names – cause these look basically the same i.e. Login.

So I thought I would do some googling on the issue and stumbled across it within my search and it seems im not the only one who has hit this.
 
From reading a number of posts and Microsoft feedback (see: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=102543) it does relate to the naming of the objects during compilation.
 
SOLUTION:
Be careful when naming aspx pages! 
To get around the issue I simply changed my Login.aspx to SignIn.aspx because I figured I had no controls or objects to clash with this name. I republished and BINGO! no longer do I have the error – all fixed. It seems though you are best to use the class name within your codebehind page (.cs) file and also change the inherits attribute in the aspx page (HTML View) to match.
 
The Web Platform and Tools Team at Microsoft have placed feedback of the following (using the URL above):
If you have used a Page that effectively uses a codebehind classname that is the same as say the Login control, that is Login, e.g. your page was called Login.aspx, then when you pre-compile (publish) the web site as an updateable web site, the aspx is retained and tries to compile against a type called Login in the code behind. It does not resolve to be that in the codebehind assembly

Try using a classname for your codebehind and defined in the inherits that does not clash with a type in System.Web, e.g. LoginPage, or qualify the class and therefore the inherits statement with a namespace, e.g.

<%@ page … inherits="theNs.Login" %.

namespace theNs { public partial class Login : System.Web.UI.Page { .. } }

Many Thanks
The Web Platform and Tools Team.

Hope this helps you if you get this error. If you need anymore clarification then feel free to post a comment with your question.

Yellow Duck Guy
Greg Olsen

 
Categories: ASP.NET
  1. Kenosi
    February 27, 2009 at 2:47 am

    Renaming the Login.aspx page worked.Also IMPORTANT, remember to rename all code that refers to the login page especially your Response.Redirect("~/Login.aspx") lines. Then test all such to prevent the unexpected but inevitable. Thanx Greg

  2. T8tube.com
    March 18, 2009 at 11:03 pm

    good

  1. No trackbacks yet.

Leave a comment