我們公司的項目是用asp.net mvc Razor開發的,先看看帶代碼吧:
var itemRef = "P43_1";
try
{
var expermentCode = "PLE0043";
itemRef = Html.ViewContext.HttpContext.Request.QueryString["itemCode"];//預留后門itemCode是ref值
if (string.IsNullOrEmpty(itemRef))
{
string itemCode = PageLabHelper.GetExperimentItemCode(expermentCode,out itemRef);
}
}
catch (Exception){ itemRef = "P43_1"; }
@:<input type="hidden" id="experimentItemCode" value="@itemRef"/> 我當時的理解是無論PageLabHelper.GetExperimentItemCode這個方法怎么報錯,我的view都是能正常訪問的,上到線上后 ,直接報500錯誤。當時也沒什么細想為什么了就直接把這段代碼給移除已解決線上問題。后來仔細思考了一下,我的view報500錯誤的原因是View默認是動態編譯的,在編譯的時候找不到PageLabHelper.GetExperimentItemCode(expermentCode,out itemRef) (dll的維護是其他組的同事,我們這邊主要負責view的維護)這個對應的方法,也就是說編譯沒有通過,那么報錯也就很好理解了。