Прошло много времени с тех пор, как мне пришлось что-то делать, кроме мелких исправлений с ASP.NET, и я никогда не развертывал приложение ASP.NET 2.0 / 3.5, поэтому, возможно, я просто упускаю что-то простое, но мне определенно нужна помощь.
По сути, у нас есть плохо написанное веб-приложение .NET 1.1, и к нам пришли некоторые подрядчики, которые сломали некоторые сторонние зависимости и обновили его до плохо написанного веб-приложения .NET 3.5 (плохо написанная часть будет адресовано позже).
Так что теперь я практикую сценарии развертывания на виртуальной машине, настроенной как наша среда развертывания.
- Я установил 3.5 рамки
- Я скомпилировал новый код и использовал опцию Build> Publish в Visual Studio в соответствии с рекомендациями подрядчиков для вывода только тех файлов, которые требуются приложению.
- Я скопировал все файлы в новый каталог внутри Inetpub на виртуальной машине и настроил web.config
- Я создал новый пул приложений
- Я создал новый веб-сайт IIS, указывающий на новый каталог и использующий новый пул приложений. Я настроил его для использования версии 2.0 на вкладке IIS ASP.NET
Но при переходе на страницу входа я получаю:
Parser Error Message: The file '/View/LoginPage.aspx.cs' does not exist.
Line 1: <%@ Page Language="C#" MasterPageFile="~/MasterPage/LoginMasperPage.Master" AutoEventWireup="true"
Line 2: CodeFile="LoginPage.aspx.cs" Inherits="MyApp.View.LoginPage" Title="MyApp - Login Page" %>
Что дает? В версии приложения .NET 1.1 весь код c # был скомпилирован в MyApp.dll, и приложение знало, что искать там. Двойная проверка с помощью рефлектора, весь код здесь тоже в двоичном виде, просто сервер его там не ищет.
Что может происходить? Я могу подождать, пока подрядчики придут завтра, или скомпилировать все, включая файлы aspx, в двоичный файл, но у нас есть веские причины для сохранения файлов aspx нескомпилированными, и я бы хотел развернуть их сегодня, если это возможно.
Обратите внимание, что это не ASP.NET MVC, пространство имен / каталог представлений просто содержит все веб-формы