Сообщение об ошибке синтаксического анализатора: не удалось загрузить тип «TestMvcApplication.MvcApplication»


152

Я получаю следующую ошибку на одном из наших производственных серверов. Не уверен, почему он работает на сервере DEV?

Описание ошибки синтаксического анализатора : во время анализа ресурса, необходимого для обслуживания этого запроса, произошла ошибка. Пожалуйста, просмотрите следующую конкретную информацию об ошибке разбора и измените исходный файл соответствующим образом.

Сообщение об ошибке синтаксического анализатора : не удалось загрузить тип «TestMvcApplication.MvcApplication».

Ошибка источника :

Строка 1: <% @ Application Codebehind = "Global.asax.cs" Inherits = "TestMvcApplication.MvcApplication" Language = "C #"%>

Исходный файл: /global.asax Строка: 1

Не уверен, сталкивался ли кто-нибудь с этой ошибкой раньше и как она была исправлена, но я дошел до конца. Любая помощь будет оценена.

Я также должен упомянуть, что это опубликованный код, поэтому все компилируется. Может ли быть что-то не так с моими настройками компилятора?



15
Выйти из Visual Studio и перезагрузить исправил это для меня.
RickAndMSFT

удалите файл global.asax и добавьте новый, и все будет в порядке.
DotNetGeek

Это случилось со мной при развертывании ранее работающего приложения. Что-то в IIS (7) попало в плохое состояние; Сброс IIS устранил проблему.
BurnsBA

Ответы:


169

Ни один из других ответов не работал для меня. Я исправил ошибку, изменив путь вывода веб-проекта. У меня было установлено bin \ debug, но веб-проект не работает, если путь вывода не установлен просто "bin"


Это была моя проблема, которая доставила мне столько горя, потому что ни одно из других решений здесь не помогло мне ...
Зак

3
+1 Это тоже была моя проблема. Сообщение об ошибке и справка по этому вопросу в основном отсутствуют. Спасибо.
Нолдорин

4
Для меня bin \ выдавал ошибку, я изменил ее только на bin. и это сработало.
Нану

1
Для меня проблема заключалась в том, что я случайно выбрал x86 в качестве активной платформы, и для этой конфигурации настройки проекта были неправильными (Bin \ Debug \ x86). Возвращение к любому процессору решило проблему. Но изменение выходного пути также сработало.
Ларс Уденгард

13
Таким образом, изменение пути вывода с bin \ Debug \ на bin удаляет ошибку для меня. Но реальный вопрос: «Почему bin \ Debug не работает в первую очередь?» Когда я собираю конфигурацию Debug или Release, я хочу, чтобы файлы генерировались в соответствующем каталоге bin.
Эллеседил

96

У меня было это пару раз. Это особенно расстраивает, поскольку это сразу, и сообщение об ошибке не имеет ни малейшего представления о том, что может быть проблемой.

Чтобы это исправить, щелкните правой кнопкой мыши заголовок вашего проекта, в данном случае «TestMvcApplication» и нажмите « build» .

Это вынуждает код компилироваться перед его запуском. Не спрашивайте меня, почему, но это было решением 100% времени для меня.


4
+1 Я тоже. И я попробовал несколько вещей, и под «вещами» я подразумеваю «дикие догадки». Хороший ответ!
Боб Кауфман

В моем случае IIS указывал на сайт MVC, который раньше не создавался. Doh. Очевидно, что это было исправлено.
Эдгар

5
Я также получил эту ошибку при изменении имени проекта, но забыл изменить пространство имен, которое использовал global.asax.cs.
Дорогой

1
Вы джентльмен и сэр, даже не задумывались над этим. Спасибо!
Бен Блэк

2
В моем случае мой проект по каким-то причинам не был настроен на сборку в свойствах конфигурации решения: i.imgur.com/kp73sGQ.png
Мэтью Лок,

24

Я обнаружил, что, когда вы вынуждены использовать Configuration Manager для запуска под x86 или чем-то иным, кроме стандартных настроек «из коробки» для стандартного проекта, IDE создает группу подкаталогов в папке bin для веб-проекта.

Как только это начинает происходить, если сервер Cassini работает, то проект не работает должным образом.

Я исправил это, зайдя в свойства веб-проекта -> Настройки сборки и изменив путь вывода на bin \

Потом пересобирай и все работает как надо.


Бинго, это решение, которое сработало и для меня. Спасибо!
moshjeier

У меня тоже сработало - разве это не ошибка?
Мэтт Вилко

И проверьте, проверен ли CheckBox на сборку
Даниэль Бишар

Если вы когда-нибудь будете в Огайо, потому что я покупаю вам 10 сортов пива, я изучал различные предложения в течение более 3 часов
Эндрю А после полудня - Delight Hayde

9

После долгого тяжелого взгляда я наткнулся на реальную проблему здесь.

Сборки были повреждены клиентом FTP, который я использовал для загрузки файлов в размещенную среду.

Я изменил свой FTP-клиент, и все работает как задумано.


9

У меня была та же самая проблема: моя была, потому что у веб-проекта была целевая платформа x86. Я работал на 64-битной машине; другие проекты в решении были установлены на 64-битные.

Чтобы проверить настройки, щелкните правой кнопкой мыши проект и выберите «Свойства». На вкладке «Сборка» проверьте значение «Цель платформы».

Также проверьте конфигурацию сборки вашего решения (меню «Сборка»> «Диспетчер конфигурации»), чтобы убедиться, что все ваши проекты собираются на одной платформе.

В обоих случаях убедитесь, что вы проверили настройки как для режима отладки, так и для режима выпуска - в противном случае он будет работать на вашем компьютере, но не при его развертывании!


Мне нужно было объединить этот ответ с ответом @brockstaylor ниже, чтобы решить эту проблему на Umbraco 7.1.6
devinbost

9

Я перепробовал все вышеперечисленные решения, но не повезло. Добавление строки <add assembly="*" />в web.config исправило это для меня. (Вы также можете добавить в файл machine.config или корневой файл web.config соответствующей версии .NET Framework, я не пробовал). Спасибо MS Support за решение.


Это была моя проблема. Мне пришлось <assemblies><clear/>...предотвратить наследование ссылок на сборки от родительского приложения во вложенном приложении IIS.
Крейг Селеста

Я никогда не нуждался в этом ... чем, неожиданно, я столкнулся с этой проблемой на одной из моих машин разработки. Не знаю, почему это началось, но это единственное, что решило это
Паскаль

9

У меня было то, что выглядело как та же ошибка. Я перепробовал много предложений со многих страниц только для того, чтобы выяснить, что проблема в том, что на моем веб-сайте установлена ​​неправильная версия .Net

Независимо от того, сколько перекомпилируется или кто-то говорит «проблема конфигурации», никто не считает, что нужно проверять версию .net.


8

Это происходит со мной, когда я переименовываю свой проект / решение. Перейти в папку проекта в Windows Explorer (выйти из VS). Найдите и откройте файл Global (может быть, вы найдете 2 файла, которые не имеют расширения «.asax.cs»), и отредактируйте строку ошибки с правильным путем. Удачи!


Это отличный ответ, за него стоит проголосовать больше - происходит переименование приложения, и такие ошибки раздражают!
Бартош

7

Я столкнулся с той же самой проблемой пару дней назад - насколько я могу судить, это была проблема с 64-разрядным IIS, работающим с 32-разрядным веб-приложением. Мы изменили наш производственный сервер на 32-битный, и эта проблема исчезла.


5

Убедитесь, что ваше пространство имен по умолчанию в свойствах веб-проекта совпадает с пространством имен в Global.asax.cs. Я изменил пространство имен по умолчанию, сделав его подпространством имен, и изменив его обратно, я решил эту проблему.


4

Для полноты картины я включил в себя мою проблему и то, как я ее решил:

Если вам нравится я и у вас есть httphandlers через web.config, и у вас есть перенаправления из вашего global.asax.cs (возможно, в Session_Start ()), как в моем случае, вы получаете эту ошибку, если ваш стартовый проект не имеет определенной ссылки, которая указывает на цель, на которую указывает ваш httphandler !! (но вы не получите ошибки сборки, только ошибки времени выполнения)

Так:

  1. Дважды проверьте ваш web.config на наличие каких-либо внешних элементов
  2. Дважды проверьте, что ваш стартовый проект содержит все необходимые ссылки.

Приветствия.


Я добавил элемент управления Ajax Toolkit, но не добавил ссылку на DLL. Спасибо за ваш # 2.
pixelmeow

4

Единственный раз, когда я испытал это, был когда MVC Framework не был установлен на сервере. Может ли это быть так?

Отсутствующий раздел Pages в Views \ Web.config также может быть причиной ошибки.


Не уверен, что это хост-сервер и по их мнению ASP .NET MVC работает нормально.
Риан Энгельбрехт

Я нашел другого человека (с дядей Google), который столкнулся с подобной ошибкой по другой причине. Добавлена ​​ссылка для ответа. Удачи!
Даниэль Эллиот

3

У меня была такая же ошибка, и ни одно из ваших решений не помогло. Я думаю, что моей проблемой было просто имя, которое я выбрал для проекта. Я назвал свой проект «интерфейс», который, когда я получил ошибку синтаксического анализа, он сказал, что он не может загрузить:

Строка 1: <% @ Application CodeBehind = "Global.asax.cs" Inherits = " @interface .MvcApplication" Language = "C #" %>

Где по какой-то причине был знак «@». Я предполагаю, что слово «интерфейс» зарезервировано для чего-то другого, и оно добавило символ @, но это явно что-то сломало. Я удалил проект и сделал новый с другим именем без проблем.


3

Вот еще один:

  1. Я работал над проектом веб-API, который использовал localhost: 12345.
  2. Я проверил другую ветку из системы контроля версий, содержащую тот же проект.
  3. Я запустил проект на ветке и получил ошибку.
  4. Я пошел в «Свойства> Веб> Проект URL» и нажал «Создать виртуальный каталог»
  5. Появилось диалоговое окно, сообщающее, что URL-адрес был сопоставлен с другим каталогом (каталогом для исходного проекта).
  6. Я нажал Okay, и виртуальный каталог был переназначен.
  7. Ошибка ушла.

Я надеюсь, что это кому-то поможет где-то :)


это на самом деле сделало это для меня!
ra170

2

У меня было много проблем и ошибок, которые нужно было решить, некоторые из приведенных выше ответов помогли, но последний трюк, который заставил меня сработать, был следующим: перейдите в свой проект, щелкните свойства.

Перейдите на вкладку «Пакет / публикация в Интернете» и убедитесь, что для конфигурации выбрано «Выпуск» и «Платформа для всех платформ».

Последнее, убедитесь, что «Элементы для развертывания (применяется ко всем методам развертывания)» установлен на «Все файлы в этой папке проекта»

Тогда это работало хорошо для меня.


2

Эта проблема сложна, потому что легко спутать первопричину с какой бы то ни было непосредственной причиной.

В моем случае непосредственной причиной было то, что решение настроено для использования NuGet Package Restore, но сервер не был подключен к Интернету, поэтому NuGet не удалось загрузить зависимости при сборке в первый раз.

Я считаю, что основная причина заключается в том, что решение не может правильно разрешить зависимости. Это может быть неверная конфигурация пути, неправильная версия сборки, конфликтующие сборки или частичное развертывание. Но во всех случаях ошибка просто говорит о том, что он не может найти тип, указанный в global.asax, потому что он не может его собрать.


2

Убедитесь, что пространство имен в Global.asaxфайле совпадает с пространством имен в файле, Global.csт.е.

global.asax: Some.Website.Webapplication

Global.cs: Some.Website(без «Веб-приложения»)


2

Я попробовал большинство из приведенных выше ответов, и они не сработали. По какой-то причине закрытие и повторное открытие VS решило проблему для меня.


2

Моя проблема была решена, когда я преобразовал в IIS физическую папку, в которой находились файлы, в приложение. Щелкните правой кнопкой мыши> преобразовать в приложение.


1

Для меня это было потому, что я временно исключил файл из проекта. Я просто включил его обратно в проект, и тогда это сработало.


У меня тоже, в файле решения было удалено несколько файлов, и я не понял, пока не закрыл и не открыл заново Visual Studio
Fiona - myaccessible.website

1

В моем случае ссылка на System.Web.MVC отсутствовала в моем проекте. Но после добавления ссылки проблема была такой же, поэтому я проверил свойства моей папки Bin, это было ReadOnly. Просто после того, как сделать его доступным для записи, все работает нормально.


1

Я получал ошибку, потому что я развернул приложение как виртуальный каталог, и я получал ошибку синтаксического анализатора «не удалось загрузить тип», затем я развернул приложение как веб-сайт, и я больше не получал эту ошибку.


0

Ни один из других ответов не решил эту ошибку для меня.
Я нашел решение, которое сработало, которое я предлагаю для тех, кто в той же ситуации:

  1. Закрыть Visual Studio
  2. Перейдите к Проектам \ yourProject \ yourProject
  3. Переименуйте Web.Debug.config и Web.Release.config
  4. Перестройте и запустите ваше приложение

Удалил их ... и теперь они больше не появляются.
FiringSquadWitness

0

Я действительно никогда не понимал, что вызывает это для меня. Я думаю, что где-то я, должно быть, пропустил некоторые файлы. Я получил ошибку после публикации на новом сервере. В конце концов я скопировал сайт с рабочего сайта. Затем сайт заработал, как и дальнейшие публикации на новом сервере.


0

Следуй этим шагам:

  1. Сложение
  2. Диспетчер конфигурации
  3. Поставь проект AnyCPU
  4. Вернуться к генерации
  5. Готово, после этого просто выполните те же шаги, чтобы передать его в x86 или x64

0

Для меня в мой проект была включена DLL, которую нужно было запускать в 32-битной среде.

Сервер был настроен для запуска веб-сайта в 32-разрядном режиме, но я не смог запустить приложение на моей 64-разрядной машине, поскольку localhostпапка не была указана для запуска в 32-разрядном режиме.


0

У меня просто была похожая проблема.

Причина была в том, что я менял файл .aspx.c и должен был сделать чистое восстановление. После этого все заработало.


0

Моя проблема заключалась в том, что я пытался создать веб-приложение ASPX в подпапке папки, в которой уже был файл web.config, и

Поэтому я открыл родительскую папку в Visual Studio как веб-сайт («Открыть»> «Веб-сайт») и смог добавить страницу ASPX нового элемента, в которой не было проблем с анализом / загрузкой.


0

Для меня проблема была только в определенных (длинных) ссылках на веб-сайте и была отслежена до URLScan, имеющего конфигурацию по умолчанию с ограничением длины URL-адреса 260.


0

У меня была такая же проблема. Пробовать:

Щелкните правой кнопкой мыши по проекту и выберите «Очистить», затем снова щелкните правой кнопкой мыши по нему и выберите «Перестроить» и запустите проект, чтобы увидеть, работает ли он.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.