大量使用 Request.QueryString["index"] 直接轉 int,用戶手動修改 URL 為非數字或空值會拋出例外。
public class PageBase : System.Web.UI.Page {
// 字串版
protected void GetQueryStringValue(string name, out string result) {
result = Request.QueryString[name] ?? "";
if (string.IsNullOrEmpty(result)) ErrorRedirect();
}
// 整數版 (含溢位/格式/空值防護)
protected void GetQueryStringValue(string name, out int result) {
GetQueryStringValue(name, out string str);
result = 0;
try { result = Convert.ToInt32(str); }
catch (OverflowException) { ErrorRedirect(); }
catch (FormatException) { ErrorRedirect(); }
catch (ArgumentException) { ErrorRedirect(); }
}
protected void ErrorRedirect() => Response.Redirect("ErrorQueryString.aspx", true);
}
public class ProjectList : PageBase {
protected void Page_Load(...) {
GetQueryStringValue("index", out int idx); // 安全取得,異常自動導向錯誤頁
// 業務邏輯...
}
}
try/catch。