asp.net использует код контроллера, хотя этот контроллер был удален? - PullRequest
0 голосов
/ 05 мая 2019

Я занимаюсь разработкой веб-приложения asp.net. Использование ISS с бэкэндом mssql db. Я пытался изменить один из контроллеров для страницы с ошибкой, но заметил, что это никак не отразилось. В качестве теста я полностью удалил контроллер, но приложение по-прежнему функционирует так, как будто оно там. Представление отображает идентификатор записи таблицы на основе ошибки, которая передается ему через ViewBag в контроллере.

У меня есть несколько версий этого приложения, поэтому я убедился, что я запускаю и тестирую текущую. В качестве меры предосторожности я даже удалил все копии контроллера и перезапустил веб-приложение в ISS. Тем не менее, когда я целенаправленно перехожу на страницу «Неожиданная ошибка», он работает так, как будто он запускается с контроллера, который я удалил.

@using RS.Core.Lib;
@{
    ViewBag.Title = "Unexpected Error";
    var ctrlr = ViewContext.Controller as RS.Web.Controllers._Controller;
    var appLogId = (int)ViewBag.AppLogId;
}

<center>
    <h3>Oops! An unexpected error has occured.</h3>
    <p>
        Please browse <a href="javascript: history.go(-1);">back</a> and try again.
    </p>
    <p>
        @if( ctrlr.GetSession().HasPermission("APP_LOG_CAN_USE") )
        {
            <span>(Error Log Id: <a href='/sysadmin/app_log'>@(appLogId))</a></span>
        }
        else
        {
            <span>(Error Log Id: @(appLogId))</span>
        }
    </p>
</center>

Можно было бы ожидать, что applogid не будет передан представлению, однако это так, и он также генерирует новые идентификаторы, чего не должно быть, потому что контроллер также имел дело с этим.

1 Ответ

2 голосов
/ 05 мая 2019

Контроллеры Asp.Net представляют собой скомпилированный код C #, который необходимо собрать перед развертыванием.Каждый раз, когда вы вносите изменения в контроллер, вы должны пересобрать проект и повторно развернуть его, чтобы увидеть изменения.Это может сбить с толку, если вы знакомы с клиентским JavaScript, который предварительно не скомпилирован, а интерпретируется браузером.

...