Преобразование CodeFile в CodeBehind
Таким образом, у меня, кажется, есть некоторые трудности с превращением моей ссылки CodeFile в CodeBehind. Прежде чем спросить, у меня нет Visual Studio, и я не на Windows. Код размещается на сервере IIS, к которому у меня есть доступ.
<% @Page Language="C#" Inherits="corn.cheese.pies.CasLogin" CodeFile="anon.cs" %>
Этот код работает отлично, однако при изменении его на:
<% @Page Language="C#" Inherits="corn.cheese.pies.CasLogin" CodeBehind="anon.cs" %>
Страница возвращает ошибку:
Parser Error Message: Could not load type 'corn.cheese.pies.CasLogin'.
1 ответ
Вы уверены, что понимаете разницу между CodeFile и CodeBehind? См., Например, CodeFile vs CodeBehind (игнорируйте согласный ответ, хотя обе ссылки dea) или эту статью о разнице.
В двух словах:
CodeBehind
предполагается, что файл скомпилирован в сборку, которая развернута в bin
папка вашего сайта. Когда движок ASP.NET загружает ваш aspx
файл, он использует Inherits
директива, чтобы попытаться найти этот класс. CodeBehind
Файл в основном используется для облегчения компиляции (и инструментов, например, "Просмотр исходного кода"), но работа выполняется во время компиляции.
CodeFile
файл находится и компилируется ASP.NET во время выполнения по требованию. Вы можете "предварительно скомпилировать" свой веб-сайт, чтобы использовать более старую модель, что полезно, если вы не хотите развертывать исходный код на каждом веб-сайте. Но по умолчанию ваш CodeFile
файл является .cs
файл, который развертывается на сайте, и класс создается в папке временного хранения ASP.NET. (С технической точки зрения: CodeFile
страницы partial class
определения, с только пользовательской частью кода, фактически развернутой в файле C#; вот почему CodeFile
изначально не существовало, потому что компилятор C# изначально не мог делать частичные классы.)
Переходя от CodeFile
в CodeBehind
вы говорите ASP.NET игнорировать наличие файла C# и искать его только в скомпилированной сборке. ASP.NET, в свою очередь, говорит вам, что скомпилированная сборка на самом деле не содержит класс, который вы сказали ей искать.