ASP.NET Custom Control - Unknown server tag

Solution 1:

When adding a namespace, I've found I also need the assembly. If your assembly is also myApplication do this in web.config:

<add tagPrefix="one" namespace="myApplication.Controls" assembly="myApplication"/>

Then, just clean and rebuild and it should all work. Once this is in your web.config, you don't need to add it to your page unless you're using this in a control in the same directory, then you'll need the reference at the top of the web form. But, I recommend against using custom server controls in the same directory as user controls.

Solution 2:

I was receiving the "Unknown server tag" error for a user control that was part of my project. There was no external assembly. @citronas mentioned that "If this does not work, your control probably can't compile.", and that is also listed as the most likely cause in this troubleshooting post.

Although my control code was compiling without errors, it turned out that there were warnings that I was ignoring. My warnings were regarding a resource file that was in my control folder that was referencing another missing file. Once I addressed the warnings, then the control compiled correctly and I was able to use the control with just a Register directive and no modifications to web.config, like this:

<%@ Register TagPrefix="myPrefix" TagName="myControl" Src="~/controls/mySourceFile.ascx" %>

<myPrefix:myControl runat="server"></myPrefix:myControl>

Solution 3:

If I understand you correctly, your control is within the same project?

Try to register the control in the markup of your page with the following:

<%@ Register Src="~/controls/foo.ascx" TagName="foo" TagPrefix="uc" %>

With <uc:foo ID="foo1" runat="server"/> you can include the control into the markup. If this does not work, your control probably can't compile. Comment out unnecessary stuff and try it again.

Solution 4:

I also had this problem when publishing my ASP.NET Web Forms application. Even when copying and pasting the folder to the server's IIS, without publishing it, similar problems on pages that used the custom controls / user controls happened systematically.

I registered correctly the controls on web.config and on my dev machine things were working ok. I thought that the registering process was ok.

To fix the problem on publish/copy-and-past deployment process, you should re-register all the user controls's namespaces and assemblies on each page (.aspx) that uses them:

<%@ Register TagPrefix="mycompany" Namespace="MyCompany.Web.Forms.Controls" Assembly="MyCompany.Web" %>
<%@ Register TagPrefix="mycomapny" Namespace="MyCompany.Web.Forms.Controls.ValidatorComponents"  Assembly="MyCompany.Web" %>

Please note that it is same mindset for custom controls or user controls. This issue happened even in VS 2012 but still .NET 4.0. This process is also needed when you ASP.NET skin references such controls.