我在的.ascx一些代碼,看起來像這樣:內嵌代碼將導致ASP.NET插入當前頁面內500頁
<%
int a = 0;
int b = 5;
int c = b/a;
%>
拋出一個500錯誤,你會期望(除0) 。
的customErrors看起來像這樣
<customErrors mode="On" redirectMode="ResponseRewrite">
<error statusCode="500" redirect="/500.aspx" />
</customErrors>
我得到一個搞砸了渲染我試圖打的頁面。查看源代碼,我看到正常頁面的一半,那麼500頁面會跟着它。
<div class="mapTextOverlay" style="width:448px;padding-left:232.96px;">
[main page abruptly ends here and the 500 page starts]
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head"><title>
500
</title>
[etc.]
所以服務器傳輸發生在頁面呈現的中間。
如何防止出現500錯誤時出現部分頁面渲染的可能性?
- 只有內聯代碼纔會發生這種情況,如果錯誤處於代碼隱藏狀態,則錯誤顯示正常。
- 代碼沒有被調用Response.Flush()
- Response.BufferOutput是真的
- 的代碼設置Response.Filter,但我想評論說,它並沒有解決它
這不是正常行爲 - 整個頁面將在任何*響應發送到客戶端之前執行。所以它不能發送給你一個部分響應,然後發送一個不同的響應。你是否通過AJAX加載其他頁面?似乎您的問題缺少[MCVE](http://stackoverflow.com/help/mcve)。 – mason