asp.net cannot publish the asp namespace? - asp.net

I use some statement with asp namespace, that likes ASP.controls1
when build, it is fine, and works well.
but when i publish, that is one error:
Error 120 c:\Projects\TideWeb\Controls\Common\ExceptionHelper\ExceptionHelper.ascx.cs(53): error CS0234: The type or namespace name 'controls_common_errorlist_errorlist_ascx' does not exist in the namespace 'ASP' (are you missing an assembly reference?)

Without example code, i try to help you by listing all error that i found in my way with the ASP namespace.
1) The UserControl 'ExceptionHelper.ascx.cs' is not used in current Page/UserControl.
You can try it: the ASP namespace appears in intellisense only if one or more UserControl are mentioned in the current page (or UserControl). If your code of mentioned UserControl contains compilation error, intellisense (and the compiler) ignore its name.
Fix the compilation error, and the name of your control get back.
2) The UserControl is registered into web.config file, and is used in a page (or UserControl) in the same directory. In this case you must re-register in the current page your UserControl by this tag:
<%# Register Src="~/MyControls/MyControl.ascx" TagPrefix="MyControls" TagName="MyControl" %>
Add this tag, and the error was fixed.
3) You mentioned:
"but when i publish, that is one error"
In some cases, my webApps won't compile correctly in the destination server, but in test all works well.
That compilation error can be a configuration error, permission of Temporary ASP.NET Directory, and the identity used by Application Pool.
If you can post some code, i could help you better.

what you said is ok but not enought. I had the same problem and solved but removing the ASP. part, so in example change this code
ASP.ascx_buscador buscador = new ASP.ascx_buscador();
for this one
ASCX_buscador = new ASCX_buscador();
and now everything's fine. Note that in the new code ASCX_ are now in capital (intellisense will help you)
found the solution on here:
Getting namespace name not found for ASP.net user control

Related

Parser Error Message: Could not load type 'xxxx.Global'

Everything worked yesterday without any errors.
Today though, I created a new page and tried to load it, which returned an error. so I went and rebuilt the solution, and now I have this error on every page on my site.
error description:
Server Error in '/' Application.
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
Parser Error Message: Could not load type 'xxxx.Global'.
Source Error:
Line 1: <%# Application Codebehind="Global.asax.cs" Inherits="xxxx.Global" Language="C#" %>
Source File: /global.asax Line: 1
I tried to look up the error, but the solutions I managed to find didn't solve the problem, I would love some help as I am truly lost about what had caused this.
EDIT: so I tried deleting the Global.asax file and running the site, which caused the first line in all my pages to return an error messege. still trying to find a solution.
Managed to solve it, Here's what finally worked for me -
first, in the first line of your aspx pages, Masterpage.Master and Global.asax you'll need to replace CodeBehind with CodeFile.
(in order to access your Global.asax code open it through the directory with a text editor).
after that, in your Global.asax.cs code, change public class Global : System.Web.HttpApplication to public partial class Global : System.Web.HttpApplication.
worth noting - this is a mishmash of a number of solutions that I found while googling, trying these separately first could also solve the bug.
You can try to set the CPU to x64 in visual studio to slove this issue:
On the menu bar, choose Build, Configuration Manager.
In the Active solution platform list, choose a 64-bit platform for the solution to target, and then choose the Close button.
If the platform that you want doesn’t appear in the Active solution platform list, choose New. The New Solution Platform dialog box appears.
In the Type or select the new platform list, choose x64.
If you want to copy the settings from a current platform configuration, choose it, and then choose the OK button.
If this does not solve your problem, you can also refer to the solution in this link:
Could not load type 'XXX.Global'.

added asp control gives error 'is not declared. It may be inaccessible due to its protection level.'

VS 2010 VB.NET Website project
On a masterpage of a website any controls I add to the master page aspx file gives the compile error: 'xxx' is not declared. It may be inaccessible due to its protection level.
This is for any new control I add, like an asp:button or an asp.panel, or a div with runat='server'.
In VS 2010 on the code behind the added controls are accessible, intellesense works, everything appears just fine, but when I compile I get a generic failed to compile error, but VS lists no errors, if I look at the build output I see the error above.
If I do not reference the added controls in codebehind the site will compile and the controls will be on the screen.
So whatever 'hidden' file VS has must be out of sync with the aspx file, problem is I see no such files in the project folders.
I did copy the master page a few weeks ago and rename it as a backup, but I edited the original not the copy. Still this may have caused the problem even though I just recently discovered it. It is possible I had not actually added any new controls that were referenced in the codebehind so I may not have noticed the problem.
How can I resolve this problem - is it possible to rebuild or resync this 'hidden' file?
I suppose I could create a new master page and copy the code over it that would work, but I have a lot of other pages referencing this master page...what a mess.
In the page declaration, change CodeFile to CodeBehind (or vice versa.)
Check this link: CodeFile vs CodeBehind
Whether it is a Web site or a web application affects how the reference to the code file is stated. (BTW, it's a web application if there's a .vbproj or .csproj file.)
Space constraint(low disk space) on drive was giving this vague message.
..'is not declared. it may be inaccessible due to its protection level.'
Resolved by creating space on drive.

BC30560: 'ExtensionAttribute' is ambiguous in the namespace 'System.Runtime.CompilerServices'

I have asp.net project (in .net 2.0) and I converted project to .net 4.0.
After I built the project successfully, I launched the website on browser, it throws error as following:
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: BC30560: 'ExtensionAttribute' is ambiguous in
the namespace 'System.Runtime.CompilerServices'.
Source Error:
[No relevant source lines]
Source File: InternalXmlHelper.vb Line: 9
........
Please give me some idea to fix it.
A common trick to use extension methods (for LINQ etc) in .NET 2 with the C# 3 (or above) compiler was to define your own ExtensionAttribute in the right namespace.
Now that you have upgraded to a later version of .NET you need to remove this now-redundant extra attribute. Find where it is defined in your code and expunge it. Also check for external libraries like LINQBridge - you won't need this any more.
One way to find it would be to use the object browser and search for ExtensionAttribute.
This was how I found the issue.
Another easy way to verify: In your code, temporarily use the class somewhere. Example:
System.Runtime.CompilerServices.ExtensionAttribute x = null;
When building, this will generate error:
The type
'System.Runtime.CompilerServices.ExtensionAttribute' exists in both
'c:\Program Files\Reference
Assemblies\Microsoft\Framework\v3.5\System.Core.dll'
and .....
And show you immediately the 2 sources causing the conflict.
I had this exact same error, and what solved it for me was to delete the Themes (under App_Themes). I haven't tried re-adding the themes to see if they'll work yet, but deleting that fixed the error, at least.
Note that I discovered it was the Themes causing this by looking at the compiler details in the error, and noting that the only .vb files it was compiling were related to themes (auto-generated). My project is all C#, so the error coming from VB made me look for the .vb files.
I had this problem, and listed below is what worked for me.
The clue was that the error message mentions InternalXmlHelper.vb. I am a C# programmer, so why the mention of a VB component?
This problem can arise if you have not been explicit about the compilation language for your ASPX page. If you have not been explicit, then IIS will compile in whatever is set as the default language for that site. If you are writing in C#, have not been explicit about the compilation language, and the default compilation language in IIS is C#, then happy days. But if the default compilation language in IIS is set to vb (which it seems it is by default), then your C# page is going to get compiled as if it were vb, and you get the BC30560 error.
The best fix is to be explicit as to the compilation language for your aspx pages, by putting a directive like this at the top of each of your aspx pages:
<%# Page Language="C#" %>
Alternatively, you can leave your pages ambiguous (no Page Language directive) and tell IIS what to use as the default compilation language, like this:
With IIS manager -> go look at the root of your websites (it will be your server name) then -> in the ASP.NET section -> double-click the .NET Compilation icon (blue down-arrow) -> in the list of settings, under the General heading, is a setting for Default Language -> set this to c#
You can also set the default language per website if you want. Same as above, but set it for a website below the root of the left-hand-side IIS tree view, instead of for the root of it. Note that if you set your default-language=c# for a website, that setting gets stored in the root web.config of your site - in the <system.web> section you'll have a value like this: <compilation debug="false" defaultLanguage="c#" />. If you delete or overwrite that setting in your web.config, it will revert to whatever is default for the IIS instance.
This error is also because you don't have the page directive at the top of your aspx file. This is why VB compiler is used.
Write this to the top:
<%# Page Language="C#" %>
I had this error. Simply restarting Visual Studio made it go away.
This error also occurs in ASP.NET MVC Web Applications if you use an incorrect file extension for your views or partials.
I had inadvertently created a view using an incorrect extension (.ascx instead of .cshtml) and received this error message.
Changing the extension to .cshtml fixed the issue.

Visual Studio 2008 losing intellisense for ASCX with CodeBehind (but works for CodeFile)?

I have the following definition at the top of my .ASCX file:
<%# Control Language="C#" AutoEventWireup="true" CodeBehind="ArticleView.aspx.cs" Inherits="MyNameSpace.ArticleView" %>
In that control I make use of <%= %> blocks to refer to members that I've declared in the code-behind file. If I compile and deploy the control, it works fine. But in Visual Studio I get a lot of design-time errors, "{some variable} does not exist in the current context." And Intellisense breaks too: it works for members of UserControl, but can't find my own declared members. There are other issues as well. In general, everything points to the fact that the ASP.articleview_ascx class getting generated is somehow not inheriting from the MyNameSpace.ArticleView class.
I've found that if I switch the CodeBehind attribute to "CodeFile":
<%# Control Language="C#" AutoEventWireup="true" CodeFile="ArticleView.aspx.cs" Inherits="MyNameSpace.ArticleView" %>
suddenly Intellisense works and all the design-time errors disappear. But I don't want to do runtime compilation, or deploy my .ASCX.CS files - so I can't use CodeFile.
I've checked the simple stuff, like making sure that my CodeBehind filename is correct & the Inherits class has the proper namespace, etc. (And since it works properly after changing the attribute to CodeFile, those must be pointing at the right place....) But what am I missing? Why can't it handle the CodeBehind attribute?
Thanks,
Steve
Update: from a thread below - basic question was, why not just use CodeFile? Answer: when I try to deploy using CodeFile= in my files, after deploying I receive the following stack trace (presented in its entirety):
/_layouts/Pages/ViewPage.aspx.cs' does not exist. at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath) at System.Web.UI.TemplateParser.ProcessCodeFile(VirtualPath codeFileVirtualPath) at System.Web.UI.TemplateParser.ProcessMainDirectiveAttribute(String deviceName, String name, String value, IDictionary parseData)
(This is from a request to /_layouts/Pages/ViewPage.aspx. ViewPage is the page that has several other controls including the ArticleView mentioned in my original example. It just happens to be the first file that fails - if I go back to CodeBehind= in ViewPage, then included ASCX with CodeFile= will fail in the same way.) This seems to be the page compiler complaining because the inherited codebehind class can't be found in any loaded DLL, so it expects there must be a CS file to do on-demand compilation.
The issue here is that I don't want to deploy CS files, just ASPX/ASCX. Having read through many articles like this great one I'm aware of the various new models of deployment, although I've never used anything but a Web Application Project (converted forward from VS2003, we were late adopters of 2005 & the WAP model had already been added by the time we switched up from 2003.) Over many VS2005/8 projects, I've never had a problem with CodeBehind=, until this Intellisense issue showed up... though it doesn't help that in this case I'm deploying to SharePoint, which introduces a whole new level of complexity.
Since I've not deployed using CodeFile before, it's very likely that I'm missing some option I'm supposed to set in VS when building, in order to force a pre-compile. I just need to be able to deploy, as I do today, as a set of ASPX/ASCX with a single codebehind DLL. And that's working today with CodeBehind= ... it just has the originally mentioned Intellisense problem, which is really what I want to fix :)
Will post more as I identify what files might be relevant to the question...
Have you checked the Build Action on your project files? I have duplicated your issue by setting the Build Action on ArticleView.ascx.designer.cs to None. I can also compile when using CodeFile, etc..., I'm 99% sure that's your problem.
You are missing the [your-file].ascx.designer.cs file, which links your controls to your codebehind.
Just like CitizenBane suggestions, you need to right-click the file (or folders, or entire web project) and select "Convert to Application". Visual Studio will examine your ascx/aspx files for the server controls, and generate that designer file for you.
I actually ran into this myself, on a far larger scale... C#: How to convert a Website project to a Web Project
Check the answer.
This has happened to me before. Try right clicking the ascx/aspx and click on "Convert to Web Application". You may just be missing the generated controls. If you don't see it in the context menu, delete the designer generated file first.
CodeBehind is deprecated in .NET 2.0. I believe that only <= 1.1 uses "CodeBehind". Now it is "CodeFile" as you say.
Why do you not want to compile your code? If you compile you don't have to deploy your .cs files...
Why do you have the code behind for your ascx control as an aspx named page code behind?
A UserControl (ascx) usually has a codebehind of
CodeBehind="ArticleView.ascx.cs"
instead of what you have listed
CodeBehind="ArticleView.aspx.cs"
Notice the aspx instead of the ascx for a User Control.
That could be your problem... a simple typo or a copy and paste error. Couple possibilities come to mind:
Maybe you have the ascx control (User Control) specified above using a code behind file that is inheriting from System.Web.UI.Page instead of System.Web.UI.UserControl (that could be causing the Visual Studio errors).
You have the UserControl pointed at the code behind for a same name aspx page. Similar problem as #1 which would cause Visual Studio to get all confused.
Your files are name ArticleView.ascx and ArticleView.aspx.cs. This might confuse Visual Studio since I believe VS might expects a particular naming convention.
For a User Control (ascx) your files should be named:
ArticleView.ascx (CodeBehind="ArticleView.ascx.cs" Inherits="[NAMESPACE].ArticleView")
ArticleView.ascx.cs (inherits from System.Web.UI.UserControl)
ArticleView.ascx.designer.cs
For a Web From (aspx) your files should be named:
ArticlePage.aspx (CodeBehind="ArticlePage.aspx.cs" Inherits="[NAMESPACE].ArticlePage")
ArticlePage.aspx.cs (inherits from System.Web.UI.Page)
ArticlePage.aspx.designer.cs
This just happened to me in VS2010 after upgrading a web application project to .net 4.0.
The answer was to make sure you have targetFramework="4.0" set on the system.web/compilation section in web.config
i.e.
<system.web>
<compilation debug="true" targetFramework="4.0">
</system.web>

'AjaxControlToolkit' is undefined Error

I am using the AjaxControlToolkit in VS2005, and it works fine. I do have some issues though, when I go to some pages I have, then click back, I get this JavaScript error:
'AjaxControlToolkit' is undefined
I have searched MSDN forums, and google, and tried many of the solutions, but none have worked. I have tried, EnablePartialRendering="true", and others. Short of rewriting everything and changing the workflow of my application, is there any way to find the root cause of this, or fix it?
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
I got this problme fixed but not by setting CombineScripts="false" but by using the solution described in this post.
There have been some changes in the latest version, due to which you have to use Sys.Extended.UI.BehaviorBase instead of AjaxControlToolkit.BehaviorBase in the registerClass call.
To get around this 'AjaxControlToolkit' is undefined Error, you may also want to ensure that you have CombineScripts set to false in your ToolkitScriptManager configuration. This can be found in your Master page and this solution has worked for me.
<myTagPrefix:ToolkitScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" EnablePartialRendering="true" SupportsPartialRendering="true" **CombineScripts="false"**>
Note you will want to change myTagPrefix to the tagprefix you are using for AjaxControlToolkit. This is usually defined in asp at the top of an aspx file like this...
<%# Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="myTagPrefix" %>
This may be a silly question, but did you double check to make sure you have the toolkit reference at the top of your aspx file?
(Adding from comment for ease of reading)
Try adding this to your web.config
<system.web.extensions>
<scripting>
<scriptResourceHandler enableCompression="false" enableCaching="false" />
</scripting></system.web.extensions>
Is that a javascript error?
I suppose it has to do with back-button support in the toolkit.
And undefined errors mostly occurs because somehow the script that contains "AjaxControlToolkit" doesn't gets properly loaded.
Thing that come to mind:
The order scripts get loaded, does the Toolkit gets priority?
When there are errors in any of the loaded scripts all the other scripts that hasn't loaded yet will simply be canceled and not gets loaded.
See the outputted HTML of the problem page, find links to all the AXD files and make sure you can download them and see valid javascripts inside.
And if you don't already, get Firefox and Firebug and you should be able to trace to the actual script line that emits the error.
Hope this helps.
As [CodeRot] said you need to ensure you have all the AJAX web.config extensions in place, this is the most commonly missed point when doing ASP.NET AJAX sites (particularly from VS 2005).
Next make sure that you have a ScriptManager on the page (which I'm guessing you do from the "EnablePartialRendering" mention).
Make sure that you are referencing the AjaxControlToolkit version for your .NET version, it is compiled for both .NET 2.0 and .NET 3.5, and I believe the latest release is only supporting .NET 3.5.
Ensure that you're getting the Microsoft AJAX Client Library added to the page (that you're not getting any errors about "Sys" missing).
Ensure that you a registering the AjaxControlToolkit in either your ASPX, ASCX or web.config.
If nothing still hasn't worked out for you. Verify that you are not caching this ascx/aspx. Remove the OutputCache declaration.

Resources