日期:2014-05-17  浏览次数:20462 次

context.Server.Execute 执行跳转报错
public class MyHandler : IHttpHandler
{
public MyHandler()
{
  request = HttpContext.Current.Request;
  response = HttpContext.Current.Response;
}

  #region IHttpHandler 成员

  public bool IsReusable
  {
  get { return true; }
  }

  public HttpRequest request;

  public HttpResponse response;

  public void ProcessRequest(HttpContext context)
  {
  string url = context.Request.RawUrl;
  Regex regex = new Regex(@"^/(\d+?).aspx");
  if (regex.IsMatch(url))
  {
  Match match = regex.Match(url);
  string id = match.Groups[1].Value;
  context.Server.Execute("showinfo.aspx?id=" + id,false);
  }
  else
  {
  context.Response.Redirect(request.Url.ToString());
  }
  }

  #endregion
}

我想实现Url重写功能,照着网上的例子来写的,现在发现在context.Server.Execute("showinfo.aspx?id=" + id,false);
处就报错了。

当我请求 http://www.frank.com/100.aspx
----------------------------------------
 为 showinfo.aspx 执行子请求时出错。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 为 showinfo.aspx 执行子请求时出错。

源错误:

行 42: Match match = regex.Match(url);
行 43: string id = match.Groups[1].Value;
行 44: context.Server.Execute("showinfo.aspx?id=" + id,false);
行 45: }
行 46: else
-------------------------------------------
第44行报错,该如何修改,请指教,谢谢

------解决方案--------------------
context.Server.Execute("showinfo.aspx?id=" + id,false); 
改为:
C# code

if(context != null && context.Server != null)
    context.Server.Transfer("showinfo.aspx?id=" + id,false);