Класс страницы вне App_Code не будет компилироваться

StackOverflow https://stackoverflow.com/questions/1667272

  •  13-09-2019
  •  | 
  •  

Вопрос

У меня есть веб-сайт, на котором есть 2 файла следующим образом:

  • страница.aspx
  • страница.aspx.cs

Раньше я мог просто переместить новые файлы на веб-сервер, и IIS автоматически скомпилировал файлы, и я мог получить доступ к странице, например.

http://www.website.com/page.aspx

...и соответствующие функции класса страницы, содержащиеся в файле .cs, будут работать нормально.

Теперь я получаю ошибку:«Не удалось загрузить тип namespace.classname», который относится к моему классу страницы.

Теперь по какой-то странной причине мне приходится поместить все мои файлы .cs, даже классы страниц, в папку app_code.

Все, что изменилось на моем веб-сайте, это то, что я реорганизовал структуру так, что вместо того, чтобы мои страницы находились в корне сети, они теперь находятся внутри. http://.../newfolder/page.aspx.

По какой-то причине все мои файлы page.aspx.cs теперь должны находиться в app_code.

Есть идеи?

Это было полезно?

Решение

Похоже, вы путаете проект веб-приложения и веб-сайт.

Вы уверены, что файлы одинаковые?Возможно, в одной директиве @Page указано CodeBehind=Page.aspx.cs, а в другой — CodeFile=Page.aspx.cs?

CodeBehind требует компиляции проекта, поэтому вы не можете просто добавить новый файл .cs, вам нужно загрузить новую скомпилированную DLL.CodeFile позволит динамическую компиляцию.

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

Наконец, этот новый подкаталог настроен как новое приложение в IIS?Что изменится в файле web.config в вашем новом каталоге?Вы используете ту же версию ASP.NET?Проверьте тег «компиляция».Я не уверен, что вы могли бы сделать, чтобы это вызвать, но я уверен, что вы могли бы вызвать это. некоторый хаос.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top