'MasterPage' does not contain a definition for - asp.net

I'm wondering all the possible reasons i might get a errors like:
'MasterPage' does not contain a definition for ...
or
The name '...' does not exist in the current context
I know that these errors are NOT code related. This is a new project that i just pulled from source control. My colleagues are running perfectly fine with this same code which leads me to believe the issue is locally with my dev environment. I thought it might be a file permission issue and so i reset the file permissions on the entire solution which did not resolve the issue.
What am i missing? Why are my ASPX pages throwing these errors at me?
Any ideas on where to look next to resolve this would be awesome.
TIA
UPDATE:
I managed to resolve all the errors i was seeing by actually running
the solution (despite the Visual Studio errors i was getting). Once i
stopped and came out of debug mode, the errors were gone in Visual
Studio.
I would very much like to know what is happening with VS that after
running the solution the errors resolve?!?! Is VS creating some sort
of reference behind the scenes?
Very confused....

Check the code behind file. If you aspx page has something like this:
<%# Master Language="C#" AutoEventWireup="true" CodeFile="AdminMaster.master.cs" Inherits="admin_AdminMaster" %>
(admin being the sub-folder name), then code behind should look like:
public partial class admin_AdminMaster : System.Web.UI.MasterPage

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'.

How To Fix "Could Not Find A Part Of The Path" Error

I have lots of different websites that I work on Visual Studio 2012. Each one is in a subfolder of the same root folder called Websites on our web server, and I have the Y drive on my PC mapped to that share using my own credentials - I'm an Administrator on the web server. I'm coding in ASP.NET/VB.NET.
Each page of each website has at the top the line:
<%# Master Language="VB" CodeFile="MasterPage.master.vb" Inherits="MasterPage" %>
This line is automatically added by Visual Studio when I create a new page (obviously the page name differs according to the page I'm working on).
In just one of my websites, whenever I open it in Visual Studio, that line is underlined in blue, and holding the cursor over it reveals the error:
ASP.NET runtime error: The pre-application start initialization method Start on type System.Web.WebPages.Deployment.PreApplicationStartCode threw an exception with the following error message: Could not find a part of the path: 'Y:\<websitefoldername>'..
This only happens with this one website. Other sites I open are fine, despite having identical Master lines at the start of their pages and being in folders in the same root folder with identical inherited NTFS permissions.
I have recently installed Visual Studio 2013 and opening the same project throws the same error. I've even gone so far as to create a new project, create each page again from scratch and just copy the body of the code of each page from the original troublesome project, hoping that allowing Visual Studio to auto-generate the code for the new pages would fix the problem, but it didn't.
In practice I didn't think the error was much of an issue since the website runs just fine and throws no errors when I build it. But I have a second issue which is also unique to this website despite the code being common across all of them so I think I need to fix this one before tackling the other. I'll post a separate question for that one if I can't get to the bottom of it myself.
Incidentally, I've already checked my Web.config file for the line <add key="webpages:Enabled" value="true" />, as suggested on various sites, but it's not there.
Any ideas, anyone?
In my case this error was being caused by a line in my Web.config file:
<identity impersonate="true" password="password" userName="domain\username"/>
Commenting it out has fixed the problem and suddenly all my IntelliSense is working properly, the website compiles correctly and so on. Unfortunately I kinda needed that key so now I'll have to figure out how to get my site working without it!

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.

ASP.NET: Could not load type

I'm getting the following error:
Could not load type 'Intel.Intel'.
I copied my entire Visual Studio 2010 folder before I formatted my computer and I copy/replaced the same folder with this one after I installed windows again. I'm running this locally not on a host server. Anyone know what I'm doing wrong? I've search google and find many pages giving solutions for this, but none seem to fix my problem. Let me know if I need to provide anymore additional information. Thanks!
Update: Sorry I was unclear I copied the "Visual Studio 2010" folder from under my documents. I've installed Visual Studio 2010 Premium from my MSDN account.
Update 2: I also forgot that I was getting this error below before the Could not load type error. I fixed it by replacing the "~" with ".". The strange thing is that while that will seem to fix that error -- If I try locating the file through the "Pick Master.." option when retyping "MasterPageFile=" it will give me the path with the tilda and yet it wont work. I don't know if this helps identify the overall problem or not.
The file '/Intel.Master' does not exist.
And below notice the "~/Intel.Master" -- as mentioned above I can get rid of this error by changing that to "./Intel.Master"
<%# Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Intel.Master" CodeBehind="Index.aspx.vb" Inherits="Intel.Index" %>
Found a solution.
I looked in IIS Manager and I found that my application was a folder icon and not an application icon. So I right clicked it and selected "Convert to Application". After doing this it solved that error and now I have another one. I feel however that this solution did "fix" the problem.
There are a bunch of registry settings that would be missing installing in this manner. Also there are components (shared) that are installed outside of the VS2010 folder.
Your best bet would be to re-install Studio in the usual (from media) route.
Based on EDIT:
The types that are missing look like they were previously stored in the GAC. Delete the reference in the project and re-create referencing the actual assembly file (DLL)
To add the reference back in to you project, open your project, drop down your solution folder, then your projct - find the references node, right click it choose add refernce, go to browse .net assemblies and or file tab depending on where the dll is, find your dll and double click on it.
Replace the CodeBehind By CodeFile and remove the namespace. before the Inherits class name. For example:
Wrong:
<%# Page Title="" Language="vb" AutoEventWireup="false"
MasterPageFile="~/Intel.Master" **CodeBehind**="Index.aspx.vb"
Inherits="**Intel.Index**" %>
Right:
<%# Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Intel.Master" **CodeFile**="Index.aspx.vb"
Inherits="**Index**" %>
it works I promise

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>

Resources