即使该控制器已被删除,asp.net仍在使用该控制器的代码?

时间:2019-05-04 23:42:18

标签: c# asp.net asp.net-mvc-4 razor

我正在asp.net Web应用程序上进行一些开发。将ISS与mssql db后端一起使用。我试图为错误页面修改其中一个控制器,但我注意到它没有任何作用。就像测试一样,我完全删除了控制器,但应用程序仍然像在那儿一样运行。该视图显示基于错误的表条目ID,该ID通过控制器中的ViewBag传递给该错误。

我有此应用程序的多个版本,因此请确保我正在运行并测试当前版本。作为预防措施,我什至删除了控制器的所有副本,然后在ISS中重新启动Web应用程序。尽管如此,当我有目的地导航到“意外错误”页面时,它的作用就好像是在我删除的控制器上运行一样。

@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传递给该视图,但这是这种情况,并且它也在生成新的ID,而事实并非如此,因为控制器也要处理该问题。

1 个答案:

答案 0 :(得分:2)

Asp.Net控制器是已编译的C#代码,必须在部署之前进行构建。每次对控制器进行更改时,都必须重新构建项目并重新部署它才能看到更改。如果您不熟悉客户端javascript,而这不是预编译的,而是由浏览器解释的,则这可能会造成混淆。