我正在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,而事实并非如此,因为控制器也要处理该问题。
答案 0 :(得分:2)
Asp.Net控制器是已编译的C#代码,必须在部署之前进行构建。每次对控制器进行更改时,都必须重新构建项目并重新部署它才能看到更改。如果您不熟悉客户端javascript,而这不是预编译的,而是由浏览器解释的,则这可能会造成混淆。