PsychoCoder
PsychoCoder

Reputation: 10755

"Parser Error Message: Could not load type" in Global.asax

I'm working on an MVC3 project and receive the following error:

Parser Error Message: Could not load type 'GodsCreationTaxidermy.MvcApplication'.

Source Error:

Line 1: <%@ Application Codebehind="Global.asax.cs" Inherits="GodsCreationTaxidermy.Core.MvcApplication" Language="C#" %>

The error I get is cannot load GodsCreationTaxidermy.Core.MvcApplication but in this screen shot the Core part isn't displaying in the error:

Error Page Screenshot

Does anyone have any ideas or a solution to this error?

Upvotes: 249

Views: 329454

Answers (30)

Shakeer Hussain
Shakeer Hussain

Reputation: 2526

I fixed error as below.

My .dll was copying in bin\Debug folder. because of these reason it was throwing Could not load type assembly.

Fix: I change the Project output path to build my dll's inside bin\ folder

 <OutputPath>bin\</OutputPath>

Upvotes: 2

Chandragupt
Chandragupt

Reputation: 11

None of the top voted answers worked for me.

This worked for me-

Make sure you have IIS Express selected in right click on Project => Properties => Web => Servers

Config setting

Upvotes: 0

Arthur Cam
Arthur Cam

Reputation: 599

If cleaning the solution, deleting the bin folder, or rebuilding the solution does not solve the issue, try recreating the virtual directory. It should work.

Debug -> Debug Properties -> Web -> Create Virtual Directory Where to find Create Virtual Directory

Upvotes: 0

Harshil Parekh
Harshil Parekh

Reputation: 57

Following can be a possibility as none of the mentioned cases in other answers matched.

Check & correct if the build is failing. Do not run last successful build if current build is failing.

In my case, build was failing for some projects and so opted for running last successful build (as Visual Studio ask for starting last successful build). So, after repeating above step several times, one or more projects started failing with reported errors.

Upvotes: 0

Vijayanand Settin
Vijayanand Settin

Reputation: 1074

My scenario was that I had just created an IIS Application and had not built the solution. I needed to rebuild it to make it work.

Upvotes: 0

Suncat2000
Suncat2000

Reputation: 1086

TL;DR: The final resolution for me, after 3 days of trying all the other answers I could find here, was setting Enable 32-bit Applications to True in my IIS application pool advanced settings, then recreating the Temporary ASP.NET Files directory and adding Modify and Write permissions for my IIS_IUSRS group.

Steps I tried:

  • Completely clean and rebuild solution.
  • Shut down and restart Visual Studio.
  • Delete Temporary ASP.NET Files directories (C:\Windows\Microsoft.NET\Framework*). This is where my problems really started: I deleted too much.
  • Reboot development machine.
  • Remove .vs folder and rebuild solution.
  • Recreate C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files. My projects are 64-bit applications, even though build platform is AnyCPU.
  • Verify output directory was set to bin/ on web projects.
  • Wipe out and check out a clean copy of my version control branch.
  • Wipe out and clone a fresh copy of my version control repository.
  • Run Windows update to latest versions of .NET Frameworks.
  • Repair, uninstall, and reinstall .NET Frameworks 3.5 and 4.8.
  • Uninstall and reinstall Visual Studio 2019 Professional.
  • Uninstall and reinstall the Internet Information Services feature in Windows.
  • Downgrade ASP.NET NuGet package and rebuild solution (issued reference errors due to changes in assemblies). Upgrade ASP.NET back to what my projects were using and rebuild solution.
  • Recreate IIS virtual directory through web project's Web properties.
  • Created "empty" Global.asax files. Restore my files after no change.
  • Replace Codebehind="Global.asax.cs" with Codefile="Global.asax.cs". This started showing me load errors for references to assemblies that actually existed in the system.
  • Enable 32-bit applications in IIS application pool. This started displaying an access error to a 32-bit temporary directory.
  • Restore permissions to all Temporary ASP.NET Files directories (add all but Full Control). This finally got my web application working again.

I was able to cobble enough information together from the myriad answers I found all over the Internet. After finding this answer after searching for iis not finding referenced .net dlls, I tried the final couple steps that got me working again, on the beginning of my 4th day wrestling with this incredibly vague problem.

This would have gone a lot faster if there were some way to diagnose why the Global.asax was unable to be loaded instead of the too-generic Could not load type error with no detail.

Moral of this story: when cleaning the Temporary ASP.NET Files directories, delete the contents of the directories, not the directories themselves. Otherwise, permissions can be lost.

Upvotes: 0

Liakat Hossain
Liakat Hossain

Reputation: 1384

I fixed it in very simple way. All you have to do is just delete all files in ProjectName\bin folder then from Visual studio top menu bar Build->Rebuild Solution to rebuild the project once again and you are done. Try to run the project now. This process worked for me in Visual Studio 2022.

Upvotes: 0

Mr. Anderson
Mr. Anderson

Reputation: 175

I had this on a very old solution. Turns out the real problem was these projects were building to 4.6.1 instead of where the rest of the referenced DLLs were build - 4.7.2. After changing all the projects in the solution to 4.7.2 it built successfully and the app ran.

Upvotes: 0

Adam Cox
Adam Cox

Reputation: 3661

Yes, I read all the answers. However, if you are me and have been pulling out all of what's left of your hair, then try checking the \bin folder. Like most proj files might have several configurations grouped under the XML element PropertyGroup, then I changed the OutputPath value from 'bin\Debug' to remove the '\Debug' part and Rebuild. This placed the files in the \bin folder allowing the Express IIS to find and load the build. I am left wondering what is the correct way to manage these different builds so that a local debug deploy is able to find and load the target environment.

Upvotes: 4

Ken
Ken

Reputation: 2808

I experienced this recently in a Web Application. The problem was a nuget package brought in a dependency to: Microsoft.Net.Compiler and Microsoft.Code.Dom

They support multilevel compiler versions ..

That converted my application to an ASP.NET website instead of the Web Application .. took me forever to resolve this - 2.5 days!!!

I deleted those from the Nuget Manager, deleted the files in obj and bin directories - closed studio - and then reopened and rebuilt the project . That fixed it but

WHAT A PAIN THAT WAS!!

I hope I save some others time on this one!

Upvotes: 0

Sam
Sam

Reputation: 109

The solution for me wasn't any of the above. I had to delete (and not recreate) Global.asax and Global.asax.cs. These files existed in the folder, even though they weren't referenced in the project. Apparently the build still saw them. Since I use OWIN with Startup.cs, the Global.asax file was obsolete and there was no issue with deleting it.

Upvotes: 1

Carra
Carra

Reputation: 17964

Two ways to get this:

  • The configuration manager shows the dll builds as a mix of '64' and 'any cpu' builds. Putting them all to the same build fixes it.

  • When switching between branches, the IIS express path is sometimes not updated. Right click 'IIS Express' in the task bar > Show all applications and verifty that the path is to the correct branch.

Upvotes: 0

Viral Parmar
Viral Parmar

Reputation: 112

I faced the problem in VS 2017 out of no where, took my whole day going through 100 of solutions any of these didnt work. I then took my whole solution and started it on different machine having VS 2017 installation.. IT FINALLY WORKED. Than reinstalled VS 2017 on the original one and it started running on that too. I strongly recommend you try your solution on a different machine before wasting much time to debug it, bcz it is a BUG in VS 2017 as it seemed for me, have reported same to VS TEAM. Hope this helps any one in grief. Cheers.

Upvotes: 0

Patrick Borkowicz
Patrick Borkowicz

Reputation: 1216

Delete the .vs directory from the solution root. Clean. Rebuild.

This issue drives me bonkers once in awhile and I inevitably end up here paging through answers. I suspect there are multiple causes that can produce this exception, this once works for me.

Upvotes: 3

DiSaSteR
DiSaSteR

Reputation: 636

"BUILD -> CONFIGURATION MANAGER and -- ahem -- check the box next to my project to ensure it actually gets built." That and going to the project folder in windows explorer, pressing options and unchecking the "Read only" checkbox helped.

Upvotes: 4

Drew Chapin
Drew Chapin

Reputation: 7989

I spent multiple days on this issue. I finally got it resolved with the following combination of suggestions from this post.

  1. Change platform target to Any CPU. I did not have this configuration currently, so I had to go to the Configuration Manager and add it. I was specifically compiling for x64. This alone did not resolve the error.
  2. Change the output path to bin\ instead of bin\x64\Debug. I had tried this several times already before I changed the platform target. It never made a difference other than getting an error that it failed to load the assembly because of an invalid format.

To be clear, I had to do both of these before it started working. I had tried them individually multiple times but it never fixed it until I did both.

If I change either one of these settings back to the original, I get the same error again, despite having run Clean Solution, and manually deleting everything in the bin directory.

Upvotes: 2

Dave Black
Dave Black

Reputation: 8019

This can also happen if you accidentally forget to set your VS solution to "Multiple Startup Projects" if you are running a Web and WebApi from the same solution.

You can check this by right-clicking on Solution in the Solution Explorer and select 'Properties". Then look for 'Startup Projects'.

Upvotes: 1

Paul Easter
Paul Easter

Reputation: 661

This happens sometimes if you change namespace information (project or class level) after the global.asax is generated.

Right click on the Global.asax file and select "Open With" and then select "XML (Text) Editor with Encoding" (other editors may work as well, but this is what I use).

Then edit the "Inherits" section in the XML directive

<%@ Application Codebehind="Global.asax.cs" Inherits="GodsCreationTaxidermy.MvcApplication" Language="C#" %>)

so that it matches the actual full name of your Application class. And that's it.

Another option is to copy off all your code from Global.asax.cs and then delete and create another Global.asax file (and then copy the code back into Global.asax.cs).

Upvotes: 35

Blair Holmes
Blair Holmes

Reputation: 1661

I tried absolutely everything here and nothing worked. My project was in VS 2013. I have since upgraded to VS 2015 and have been creating all of my new applications in 2015 but loading, compiling, building etc all of my old apps that were built in 2013 in that version.

I ended up just loading the solution in 2015 and it resolved it for me.

Upvotes: 0

Mike Gledhill
Mike Gledhill

Reputation: 29161

I had this issue today, and it took me a while to find the cause.

Basically, my main VS2015 project was including a sub-project which had been built using a higher version of .Net Framework.

Bizarrely, when you have this problem, VS2015 will happily report that the solution has built okay, but when you try and run the website, it just gives you that misleading error, suggesting that your Global.asax.cs file is wrong.

So, if you see this error, and Cleaning/Rebuilding doesn't help, open your Project's References tree, and check for exclamation marks.

enter image description here

Also, check your Output window for messages like this:

The primary reference "C:\Projects\Business Objects 4\bin\Release\BusinessObjects.dll" 
could not be resolved because it was built against 
the ".NETFramework,Version=v4.5" framework. 
This is a higher version than the currently targeted framework
".NETFramework,Version=v4.0".

The solution, of course, is to right-click on your main project, select the top tab, "Application", and change the Target Framework version to a higher version which matches your sub-project.

It's annoying that Visual Studio 2015 will let you fully build and run Solutions which quietly contain this problem. It's asking for trouble..!

Upvotes: 7

Sheldon
Sheldon

Reputation: 166

I encountered this error message and eventually discovered that the error message was misleading. In my case there appears to have been a routing issue in IIS which caused the global.asax from another site on the web server to be read thus generating the error.

In IIS, my site was bound to http:*80:webservices.local and contained an application called MyAPI. I received the dreaded message when calling the MyAPI application using the web server's ip address.

In order to successfully call my application I had to add a host file entry for webservices.local on all of the machines that called the MyAPI application. Then all of my requests had to be prefixed with http://webservices.local/MyAPI/ in order to route correctly.

Upvotes: 0

Vishnu
Vishnu

Reputation: 2187

For my case, the web assembly was part of GAC... so after build, it need to installed in GAC and it worked.

Upvotes: 0

Codeone
Codeone

Reputation: 1201

cant load errors with your project firstly Fix your errors and after rebuild project its working

Upvotes: -3

Stachu
Stachu

Reputation: 5847

I spent literally a day trying to resolve this.

The only thing that worked was deleting the .sln file, creating a new one, and adding the projects back in one by one.

¯\_(ツ)_/¯ - Programming - ¯\_(ツ)_/¯

Upvotes: 0

Facio Ratio
Facio Ratio

Reputation: 3393

Your local web server is running different code than what you're actually working on. Ensure you have stopped debugging, stop your local web server, clean and rebuild as Peter suggested, double-check your global.asax and global.asax.cs, and try again.

If this doesn't work and you are using local IIS, try removing the site in IIS Manager and recreating it manually.

Upvotes: 190

bkwdesign
bkwdesign

Reputation: 2097

I was working on an older 'folder based' ASP.NET web project (which I loathe) - and found this to be my fix:

Create an App_Code folder (if you didn't have one already)

Move the Global.asax.vb file into the App_Code folder

The markup in Global.asax can leave out any namespaces (at least, for this style of project, afaik):

<%@ Application Codebehind="Global.asax.vb" Inherits="MyApp" Language="VB" %>

...where "MyApp" is the name of the class being defined in Global.asax.vb

Upvotes: 5

Mahesh
Mahesh

Reputation: 46

I too faced the same problem. Despite of following every Answer it didnt work. Then I changed the "Inherits=namespace.class" to "Inherits=fully qualified assemble name" i.e "Inherits=namespace.class,assemblyname, Version=, Culture=, PublicKeyToken=" Hope it helps.

Upvotes: 1

Seyed Morteza Mousavi
Seyed Morteza Mousavi

Reputation: 6953

I have same problem when I have 2 instance of Visual Studio running same project. So I closed both Visual Studio and opened only one instance and It works fine now!

Upvotes: 2

S s
S s

Reputation: 877

The problem for me is that I didn't include global.asax.cs in my project. And because I was copying files from a .net 4.5 to a 4.0 I didn't comment out lines that are not needed in 4.0. Because it was not included visual studio compiled it anyway without issues. But when I included it, it highlighted the lines that cause problems.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//using System.Web.Http;
using System.Web.Mvc;
//using System.Web.Optimization;
using System.Web.Routing;

namespace YourNameSpace
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            //GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            //BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}

Upvotes: 0

htm11h
htm11h

Reputation: 1779

I have to report that I tried at least 4 suggestions from this post. None of them worked. Yet I am happy to report that I recovered by retrieving from back up. Only had to update my last code changes from log file. Took less then 10 minutes. Spent 3 times that reading this post and trying other suggestions. Sorry.

It was a very weird error. Good luck to anyone else encountering this gremlin.

Upvotes: 2

Related Questions