Сообщение об ошибке синтаксического анализатора: не удалось загрузить тип 'sometype'

Я испытываю ошибку, которую я не могу решить в течение некоторого времени. Мне было интересно, может ли кто-нибудь помочь определить причину этой ошибки? Я совершенно новичок в asp / asax. После некоторых исследований я думаю, что ошибка, которую я получаю, связана с веб-приложением, пытающимся использовать устаревший код. Я думал перестроить файл c# с помощью Visual Studio и / или всего проекта. Тем не менее, я совершенно новичок в C# и asp, и мне было интересно, может ли это дать мне некоторые предложения решить проблему и/или если есть возможность альтернативного решения.

сообщение об ошибке

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

Source Error:   <%@ Application Codebehind="Global.asax.cs" Inherits="Inventory1.Global" %>

весь глобальные.содержание эйсакс:

<%@ Application Codebehind="Global.asax.cs" Inherits="Inventory1.Global" %>

15 ответов


попробуйте заменить CodeBehind С CodeFile


не удалось загрузить тип

означает, что тип не может быть загружен. (В этом случае "тип" означает Inventory1.Global). Типы расположены в скомпилированных DLL. Таким образом, либо DLL недоступна, устарела, либо не содержит public тип с заданным именем.

возможные причины:

  • у вас нет типа, объявленного с заданным именем. Для вашего примера, вы должны иметь следующий:
namespace Inventory1 {
  public class Global {
  ...
  }
}

Примечание: избегайте таких имен, как Inventory1. Они подразумевают, что существует Inventory2, Inventory3, etc., который является плохой практикой, так как они abmiguous и не очень описательные. Кроме того,Global довольно расплывчато и может привести к путанице с глобальное пространство имен.

  • убедитесь, что ваши дела соответствуют (Inventory1, а не INVENTORY1.)
  • вы не собрали проект. В VS перестройте решение.
  • сборка, объявляющая класс, имеет ошибку компиляции, поэтому соответствующая DLL отсутствует или устарела. Убедитесь, что вы разрешили все ошибки.
  • класс не помечен как public.

если бы мне пришлось угадывать, я бы поставил на ошибку компиляции. В отличие от PHP и других интерпретируемых языков, C# должны быть успешно скомпилированы, прежде чем их можно будет использовать.


У меня была эта ошибка, просто нужно было перестроить проект


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

решение Очистите папку bin. Создайте все зависимые библиотеки классов и ссылайтесь на них в основном проекте и создайте полное решение.

Я сделал это и он работал как шарм для меня !!


Это случилось со мной на моей локальной машине. Вопрос был некорректен IISExpres конфигурации. Если эта проблема возникает в локальной среде (выполняется отладка Visual Studio), проверьте файл конфигурации IIS Express. Убедитесь, что путь к локальному сайту/приложению указывает на правильное расположение.

файл конфигурации называется applicationhost.config. Он хранится здесь: Мои Документы > IIS Express > config . Обычно (не всегда) один из этих путей будет работа:

  • %userprofile%\documents\iisexpress\config\applicationhost.config
  • %userprofile%\Мои документы\iisexpress\config\applicationhost.config

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

(Примечание: возможно, Вам не нужно делать все это - это в каждом конкретном случае)

  • если вы внесли какие-либо изменения из IIS Express в локальный IIS, вам может потребоваться изменить конфигурацию сборки из bin/debug до bin. (Щелкните правой кнопкой мыши решение > > свойства > > сборка > > вывод)

  • если у вас есть ЧПУ, то вам нужно будет установить URL переписать на локальном IIS.

  • перейти к applicationhosts.config файл (обычно это какое-то место, например C:\Users\username\Documents\IISExpress\config) и переименовать файл в applicationhostsOLD.config.

  • очистить и перестроить проект. Возможно, вам придется вручную очистить корзину.

вы должны быть хорошо идти.

поскольку это происходило только с IISexpress, изменение вывода из bin\Debug\ в bin\ решило его для меня. Изменение тега CodeBehind на CodeFile только создало еще больше проблем.


вероятно, вы что-то переименовали. Проверь Глобал.асакс.cs-файл для объявления класса и убедитесь, что пространство имен и имя класса соответствуют ровно что находится в файле asax. Это включает в себя дело! Можете ли вы скопировать / вставить объявление пространства имен и класса .cs-файл в сообщение здесь, чтобы мы могли сравнить?


сообщение об ошибке синтаксического анализатора: не удалось загрузить тип __

после выполнения всего, что было предложено в комментариях выше, без везения, обновление (загрузка) содержимого /bin на сервер сработало. Файлы, загруженные в bin, являются: dll, pdb и xml. Не знаю, кто это сделал.

проблема, которую я здесь имел, была вызвана переименованием файла (_.aspx) в обозревателе решений.


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

Я пытался использовать привязки на веб-сайте, но это не работает. Я попытался позвонить на сайт с http://localhost/Report.aspx (Это была моя домашняя страница, которую я решил не называть Default.aspx - Я собирался обновить раздел "Документы по умолчанию" с именем позже), когда я получил ошибку парсера, OP увидел. Поэтому я попробовал некоторые вещи:

Я остановил сайт старого проекта и построил другой, простой веб-проект, который имел "привет" и ярлык на странице и ничего больше. У меня была строка в Page_Load, чтобы заполнить свойство Text метки "world!- просто чтобы убедиться, что эта часть работает. Я создал новый веб-сайт на порту 80 и передал опубликованное содержимое моего сайта на сервер. Хоть я и был .Нетто 4.5 установленный на сервере (и запустил команду aspnet_regiis-i из каталога 4.0), а пул приложений в IIS, который я использовал для этого нового проекта, был установлен в 4.0, браузер пожаловался на веб-сайт.конфигурация, имеющая targetFramework=4.5.2 в нем, который является платформой Visual Studio 2015 по умолчанию. Поэтому я установил .NET 4.6 (NDP46-KB3045557-x86-x64-AllOS-ENU.exe), перезапустил сервер, а затем мой простой сайт работал. Поэтому я удалил этот сайт - все, что я хотел сделать, это доказать, что мои шаги по установке были точная и сервер может запустить сайт.

Итак, я вернулся к своему первоначальному проекту/сайту - я удалил и воссоздал веб-сайт. Я поместил пул приложений в тот, который я изначально создал для этого, который я обеспечил запуск .NET 4.0. Как только я это сделал, я перешел на свой сайт, и все работало при использовании http://localhost/Report.aspx. Поэтому мне кажется, что вызывает это то, какую версию .NET Framework вы используете.


Я пробовал все решения, перечисленные выше, и никто из них не работал. Я, наконец, создал новую веб-страницу (webform) и скопировал в нее весь код (cs и aspx-файлы) из старого, удалил старый cs и aspx-файл, перекомпилировал, и теперь я вернулся в бизнес. Я знаю, что это бессмысленно. Это не должно было иметь значения, но сработало.


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

Я попытался открыть свой проект как решение, и это решило мою проблему.


пожалуйста, проверьте пространство имен и имя класса во всех местах, в одном случае один член команды изменил пространство имен ,и я использовал старое пространство имен.файл ASPX. Это вызывало проблемы. Я обновил пространство имен, и оно заработало.


Он не может найти необходимый файл в сборке dll. Перестройте проект, перестройте решение и повторите попытку.


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