当前位置: 代码迷 >> ASP.NET >> context.Server.Execute 施行跳转报错
  详细解决方案

context.Server.Execute 施行跳转报错

热度:10195   发布时间:2013-02-25 00:00:00.0
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);
  相关解决方案