"Повідомлення про помилку парсера: Не вдалося завантажити тип" у Global.asax


203

Я працюю над проектом MVC3 і отримую таку помилку:

Повідомлення про помилку аналізатора: Не вдалося завантажити тип "GodsCreationTaxidermy.MvcApplication".

Помилка джерела:

Рядок 1: <%@ Application Codebehind="Global.asax.cs" Inherits="GodsCreationTaxidermy.Core.MvcApplication" Language="C#" %>

Я отримав помилку, не може завантажити GodsCreationTaxidermy.Core.MvcApplication, але на цьому екрані знімок Основна частина не відображається в помилці:

Скріншот сторінки помилок

Хтось має ідеї чи рішення цієї помилки?


8
У вас дійсно є клас GodsCreationTaxidermy.Core.MvcApplication у вашій програмі? Якщо ні, будь ласка, створіть те саме і складіть проект. Це буде працювати точно.
Шайлеш

4
Так, у мене є GodsCreationTaxidermy.Core.MvcApplication (Global.asax.cs)
PsychoCoder

Файл Global.asax, який, здається, використовується (відповідно до знімка екрана) виглядає інакше, ніж показаний на екрані.
Дарин Димитров

перевірте, чи рядок Inherits такий, як шлях до класу у вашій програмі (простір імен + ім'я шляху), тобто вони обидва GodsCreationTaxidermy.Core.MvcApplication
linkerro

Це одне з питань, Дарин, незалежно від того, що я роблю, це завжди залишає
основну

Відповіді:


175

Ваш локальний веб-сервер працює з іншим кодом, ніж над тим, що ви насправді працюєте. Переконайтеся, що ви припинили налагодження, зупиніть локальний веб-сервер, очистіть і переобладнайте так, як запропонував Петро, ​​двічі перевірте свої global.asax та global.asax.cs та повторіть спробу.

Якщо це не працює, і ви використовуєте локальний IIS, спробуйте видалити сайт у IIS Manager та відтворити його вручну.


4
Справді дуже дивна помилка. Я розгорнув IIS на сервері і отримав це. Очищений і перекомпільований працював і для мене.
Пьотр Кула

2
Очистити / відновити + знову створив віртуальний каталог, а потім він працював.
fantastik78

4
Виникла проблема, коли я відкрив один і той же проект у двох екземплярах Visual Studio. Тому у мене було два екземпляри запуску IIS Express. Мені довелося закрити його, і тоді це було вирішено.
lvmeijer

4
Ви також можете спробувати видалити папки bin / obj у своєму проекті.
арні

1
Я дотримувався цих вказівок і вклав кілька додаткових очищень / відновлень, змінив пробіл у файлі .asax, переформатував монітори та зробив мандрівний джиг у супроводі труб Пана, і це, здавалося, зробило трюк.
MrBoJangles

206

Перевірте, чи встановлено вихідний шлях для проекту (властивості проекту / Build) bin а не bin\Release чиbin\Debug

Чомусь IIS (сервер розробки VS або локальний IIS) завжди звертається до бібліотек з bin каталогу (і не шукає підкаталогів)


27
Кредит, де це належить. Виправлено мою проблему, у моїй програмі було налаштовано використовувати bin \ Debug, змінивши її у біні, це вирішило. Велике дякую.
Joey Bob

Цікаво було дізнатися, що проекти ASP.NET не використовують bin / $ (конфігурація) / за замовчуванням. Велике спасибі за відповідь!
Яанус Варус

2
@JamesPusateri: будьте обережні. Кожен раз, коли ви запускаєте, він використовуватиме те, що є в / bin. Тож, ймовірно, результат цієї побудови ви зробили після зміни.
Вінсент де Лагаббе

1
Нічого собі, у 2018 році IIS все ще працює таким чином. Погано, дуже погано для Microsoft. Дякую!
Родріго Т.

1
майже нічого не змінюється майже 7 років, порада все ще допомагає
Юрій Вікулов

33

Спробуйте змінити файл global.asax (просто додайте пробіл десь) та повторіть запуск. це змусить вбудований веб-сервер оновити та перекомпілювати файл global.asax.

Також робіть чистку і відновлюйте - має вирішити проблему


4
Змінення global.asax для мене нічого не зробило, але чиста та відновлена ​​помилка виправила :)
NightShovel

У мене була ця проблема, коли мені не вистачало сил. Почистити та відновити допомогли. Дякую!
Горгі Ранковський

Не вдалося очистити. Помилка побудови. У мене не було проблем зі своїм побудовим шляхом. Це, однак, зробило трюк. Дякую!
egandalf

Спасибі за вашу відповідь г - н Маннінгса
дада

30

Це трапляється іноді, якщо ви змінюєте інформацію про простір імен (проект або рівень класу) після global.asaxстворення.

Клацніть правою кнопкою миші на Global.asax файл і виберіть "Відкрити за допомогою", а потім виберіть "XML (Text) Editor with Encoding" (інші редактори також можуть працювати, але це те, що я використовую).

Потім відредагуйте розділ «Спадки» в директиві XML

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

щоб вона відповідала фактичній повній назві вашого класу Application. І це все.

Інший варіант - скопіювати весь код з Global.asax.cs, а потім видалити та створити інший файл Global.asax (а потім скопіювати код назад у Global.asax.cs).


Це працювало і для мене. Я змінив простір імен для збірки для всіх проектів у рішенні. Тому довелося відредагувати Global.asaxфайл, як зазначено в цій відповіді, і зробити так, щоб він відповідав тому, що вказано в налаштуваннях Конфігурації проекту.
Шива

21

Я закрив і знову відкрив візуальну студію, і вона спрацювала.


4
закрити ВСІ свою візуальну студію
Jboy Flaga

11
Спершу ми повинні всі спробувати вийти з машини, зачинивши всі двері, а потім знову повернутися.
pajics

ні, вам доведеться одночасно закривати двері на ВСІ ваші автомобілі.
BlackICE

17

Мені довелося перейти до НАВЧАЛЬНОГО -> КОНФІГУРАЦІЙНОГО КОНФІГУРАЦІЇ та - ага - встановити прапорець біля мого проекту, щоб переконатися, що він фактично будується.


2
Я не розумію протиправного голосу. Це потенційно може бути рішенням. Це насправді більш актуально, ніж думає більшість ... Якщо це не встановлено, це не завжди найочевидніше місце. Особливо, коли є кілька конфігурацій.
Ентоні Мейсон

Мені подобається ваша відповідь та ваші міркування!
УКМ

1
Це теж була моя проблема, і я поняття не маю, як проекти не вибрали конфігурацію.
Сет

5

У мене сьогодні було це питання, і мені знадобилося певний час, щоб знайти причину.

В основному, мій головний проект VS2015 включав підпроект, який був побудований за допомогою вищої версії .Net Framework.

Як не дивно, коли у вас є ця проблема, VS2015 із задоволенням повідомить, що рішення вирішило нормально, але коли ви спробуєте запустити веб-сайт, це просто видасть цю помилкову помилку, підказуючи, що ваш Global.asax.cs файл неправильний.

Отже, якщо ви бачите цю помилку, і чистка / відновлення не допомагає, відкрийте Referencesдерево вашого проекту та перевірте, чи є знаки оклику.

введіть тут опис зображення

Також перевірте своє Outputвікно на наявність таких повідомлень:

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

Рішення, звичайно, полягає в тому, щоб клацнути правою кнопкою миші ваш основний проект, вибрати верхню вкладку "Застосування" та змінити версію Target Framework на вищу версію, яка відповідає вашому підпроекту.

Прикро, що Visual Studio 2015 дозволить вам повністю створити та запустити рішення, які спокійно містять цю проблему. Просить клопоту ..!


2

Ви також можете перевірити властивості свого сайту в IIS. (У IIS клацніть правою кнопкою миші сайт та виберіть Властивості.) Переконайтеся, що параметр «Фізичний шлях» вказує на правильний шлях для вашої програми, а не для іншої програми. (Це виправило цю помилку для мене.)


2

Я щойно стикався з цим у програмі MVC5, і мені нічого не працювало. Це сталося одразу після того, як я спробував повернути SVN до старішої версії проекту.

Я повинен був видалити global.asax.cs, а потім додав новий, клацнувши правою кнопкою миші Проект -> Додати новий елемент -> Global.asax і ТОМ нарешті це виправили.

Просто подумав, що це може комусь допомогти.


Якщо це виправить це для вас, напевно, щось зіпсувалося про властивість "Зробити дію" існуючого global.asax.csфайлу. Його слід встановити на "Компілювати". Дію збирання самого global.asaxфайлу слід встановити на "Зміст".
Стівен Лікенс

Я зробив саме те, що зробив @iAteABug_And_iLiked_it, і проблема була вирішена!
cinczinc

2

Я маю повідомити, що я спробував принаймні 4 пропозиції з цього поста. Жоден з них не працював. Але я радий повідомити, що відновився, завантажившись із резервної копії. Треба було лише оновити останні мої зміни коду з файлу журналу. Взяв менше 10 хвилин. Прочитав 3 рази, прочитавши цю публікацію та спробувавши інші пропозиції. Вибачте.

Це була дуже дивна помилка. Удачі всім, хто стикається з цим гремліном.


2

У мене така ж проблема, коли у мене є 2 екземпляри Visual Studio, що працює на одному проекті. Тож я закрив і Visual Studio, і відкрив лише один екземпляр, і він працює чудово зараз!


2

Я працював над старішим веб-проектом ASP.NET, заснованим на папках (який я ненавиджу) - і виявив, що це моє виправлення:

Створіть App_Codeпапку (якщо у вас її ще не було)

Перемістіть Global.asax.vbфайл у App_Codeпапку

Розмітка в Global.asax може залишати будь-які простори імен (принаймні, для цього стилю проекту, afaik):

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

... де "MyApp" - це назва класу, визначеного в Global.asax.vb


2

"ЗРОБИТИ -> КОНФІГУРАЦІЙНИЙ КОНФІГУРАЦІЙ та - ага - поставте прапорець біля мого проекту, щоб переконатися, що він фактично будується." Це допомогло перейти до папки проекту в Windows Explorer, натиснувши параметри та зніміть прапорець "Читати лише".


просто це працювало на мене. Проект не має вбудованої опції, я не знаю, чому, але це вирішення було те, що мені було потрібно, дякую.
willyMon


1

Я теж зіткнувся з тією ж проблемою. Незважаючи на дотримання кожного відповіді, це не спрацювало. Потім я змінив "Inherits = namespace.class " на "Inherits = повністю кваліфіковане ім'я збирання ", тобто "Inherits = namespace.class, Assemblyname, Version =, Culture =, PublicKeyToken = " Сподіваюся, що це допомагає.


1

Це також може трапитися, якщо ви випадково забудете встановити своє рішення VS на "Кілька проектів запуску", якщо ви використовуєте Web і WebApi з того самого рішення.

Ви можете перевірити це, клацнувши правою кнопкою миші на Рішення в Провіднику рішень і виберіть "Властивості". Потім знайдіть "Запуск проектів".


Моє було подібне до цього: я запускав неправильний проект API у рішенні. У мене фактично була помилка компілятора в API, я думав, що я працюю, але VS не підходив до цього, коли запускав рішення, навіть після очищення.
Іван

1

Видаліть .vsкаталог з кореня рішення. Чисто. Перебудувати.

Це питання замикає мене раз на раз, і я неминуче опиняюся тут, переглядаючи відповіді. Я підозрюю, що є кілька причин, які можуть призвести до цього винятку. Це колись працює для мене.


Кілька годин спроб тисячу інших пропозицій, і саме це зробило для мене. У моїй програмі відмінно працювали у Visual Studio, як у конфігураціях налагодження та випуску, але після опублікування в IIS я отримував помилку. Видалення папки .vs та повторне розгортання виправили проблему.
Філіп Стратфорд

1

Так, я прочитав усі відповіді. Однак якщо ви мене та витягуєте все, що залишилося від вашого волосся, спробуйте перевірити папку \ bin. Як і у більшості файлів proj, можливо, є кілька конфігурацій, згрупованих під XML-елементом PropertyGroup, я змінив OutputPathзначення з "bin \ Debug", щоб видалити частину "\ Debug" та відновити. Це розмістило файли у папці \ bin, що дозволяє Express IIS знаходити та завантажувати збірку. Мені залишається цікаво, що це правильний спосіб керувати цими різними збірками, щоб локальне розгортання налагодження змогло знайти та завантажити цільове середовище.


Це єдине, що спрацювало. Стільки похованих тіл ... такі речі, що змушують мене серйозно розглянути інші покликання.
doveryai

0

Цю проблему я вирішив, давши право дозволу на папку, а також перевірку від IIS.

Мені дали дозвіл усім, коли я тестуюсь у своєму місцевому середовищі. Але в режимі публікації, я думаю, ми даємо лише дозвіл користувачеві ASP.Net.


0

Я також отримав ту ж помилку ... перевірте ім'я програми, яку ви правильно розробили, тобто. виділеного простору імен та назви збірки, а також спробуйте фізично змінити назву папки, створеної для програми, все це повинно бути таким самим, як ім'я у вищевказаному просторі імен, присутнім у файлі global.asax


0

Я також отримав таку ж помилку ... перевірте конфігурацію IIS вашої віртуальної каталогів і переконайтеся, що властивості - ASP.NET - версія ASP.NET однакова з властивостями проекту - застосунку - цільової рамки. (Це виправило цю помилку для мене.)


0

Моя програма була побудована в більш старій версії VS і не мала папки. Я оновив її до нової версії, і у мене був кошмар, щоб розгорнути її. Я остаточно відстежив цю помилку до проекту> Властивості> Додаток. Цільова рамка була встановлена ​​на 2,0; змінивши його на сервері, щоб він відповідав менеджеру IIS / App Pool, вирішив проблему для мене.


0

Я виявив, що зміна простору імен в проекті, не перетворюючи на це рішення, була моєю проблемою. Перевірте властивості проекту та подивіться, який у вас простір імен, переконайтеся, що рядки вгору є впоперек.


0

Проблема для мене полягає в тому, що я не включив global.asax.cs у свій проект. А оскільки я копіював файли з .net 4.5 в 4.0, я не коментував рядки, які не потрібні в 4.0. Оскільки візуальна студія не включалася, вона склала його все одно без проблем. Але коли я включив його, він виділив лінії, які викликають проблеми.

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);
        }
    }
}

0

Я витратив буквально день, намагаючись вирішити це.

Єдине, що працювало, - це видалення .sln файла, створення нового та додавання проектів назад по одному.

¯ \ _ (ツ) _ / ¯ - Програмування - ¯ \ _ (ツ) _ / ¯


0

У моєму випадку веб-збірка була частиною GAC ... тому після збирання її потрібно встановити в GAC і вона спрацювала.


0

Я зіткнувся з цим повідомленням про помилку і врешті-решт виявив, що повідомлення про помилку вводить в оману. У моєму випадку, здається, у IIS виникла проблема з маршрутизацією, яка спричинила зчитування global.asax з іншого сайту на веб-сервері, що призвело до помилки.

У IIS мій сайт був прив’язаний до http: * 80: webservices.local і містив додаток під назвою MyAPI. Я отримав жахливе повідомлення під час виклику програми MyAPI за допомогою ip-адреси веб-сервера.

Для успішного виклику моєї програми мені довелося додати запис хост-файлу для webservices.local на всіх машинах, що викликали додаток MyAPI. Тоді всі мої запити мали бути встановлені за допомогою префікса http: //webservices.local/MyAPI/ , щоб правильно прокласти маршрут.


0

Я спробував тут абсолютно все, і нічого не вийшло. Мій проект був у VS 2013. Я з тих пір перейшов до VS 2015 і створював усі мої нові програми у 2015 році, але завантажував, компілював, будував і т. Д. Всі мої старі програми, які були побудовані в 2013 році в цій версії.

Я закінчила лише завантаження рішення у 2015 році, і це вирішило для мене.


0

Я витратив кілька днів на це питання. Нарешті я вирішив це за допомогою наступного поєднання пропозицій з цієї посади.

  1. Змінення цілі платформи на будь-який процесор. Наразі у мене не було цієї конфігурації, тому мені довелося перейти до Менеджера конфігурацій та додати його. Я спеціально компілював для x64. Це одне не усунуло помилку.
  2. Змініть вихідний шлях на, bin\а не на bin\x64\Debug. Я намагався це кілька разів, перш ніж змінити ціль платформи. Він ніколи не змінився, окрім помилки, що не вдалося завантажити збірку через невірний формат.

Щоб було зрозуміло, я повинен був зробити те і інше, перш ніж воно почало працювати. Я спробував їх окремо кілька разів, але це ніколи не виправлялося, поки я не робив обох.

Якщо я зміню будь-яке з цих налаштувань назад до початкового, я знову отримую ту ж помилку, незважаючи на те, що запустив Clean Solution і вручну видалив усе в binкаталозі.


0

Два способи отримати це:

  • Менеджер конфігурацій показує складання dll у вигляді суміші "64" та "будь-якого процесора". Встановлення всіх в одну збірку виправляє це.

  • Під час перемикання між гілками експрес-шлях IIS іноді не оновлюється. Клацніть правою кнопкою миші 'IIS Express' на панелі завдань> Показати всі програми та перевірити, чи шлях до правильної гілки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.