如何在c#3.0的Class文件中定义的函数内部使用response.redirect
本文关键字:内部 函数 redirect response 定义 文件 c#3 Class | 更新日期: 2023-09-27 18:21:18
我在类文件中定义了一个简单的函数GetPageName(String PageFileName, String LangCode)
。我从default.aspx.cs
文件调用此函数,在此函数中,我无法使用Response.Redirect("Error.aspx")
向用户显示已生成错误。
以下是代码的示例
public static string GetPageName(String PageFileName, String LangCode)
{
String sLangCode = Request("Language");
String pgName = null;
if ( sLangCode.Length > 6)
{
Reponse.Redirect("Error.aspx?msg=Invalid Input");
}
else
{
try
{
String strSql = "SELECT* FROM Table";
Dataset ds = Dataprovider.Connect_SQL(strSql);
}
catch( Exception ex)
{
response.redirect("Error.aspx?msg="+ex.Message);
}
}
return pgName;
}
我可能在Business和Datalayer中定义了函数,我想在其中捕获错误并将用户重定向到error页面。
HttpContext.Current.Response.Redirect("error.aspx");
要使用它,您的程序集应该引用System.Web.
首先,在您尝试使用的一个地方:
response.redirect(...);
这无论如何都不起作用-C#是区分大小写的。
但更大的问题是,通常Response.Redirect
使用Page.Response
属性来获取相关的HttpResponse
。当然,当你不在页面中时,这是不可用的。
选项:
- 使用
HttpContext.Current.Response
获取执行线程的当前响应的响应 将其作为参数传递到方法中:
// Note: parameter names changed to follow .NET conventions public static string GetPageName(String pageFileName, String langCode, HttpResponse response) { ... response.Redirect(...); }
(编辑:如评论中所述,您还存在SQL注入漏洞。请使用参数化SQL。同样,直接向用户显示异常消息本身也可能是一个安全漏洞…)