【发布时间】:2011-07-28 20:08:06
【问题描述】:
我有一个带有以下 ProcessRequest 方法的 IHttpHandler:
public void ProcessRequest(HttpContext context) {
int id = Convert.ToInt32(context.Request.QueryString["id"] + 151);
var xml = XDocument.Parse("<xml><cartid>" + id + "</cartid></xml>");
context.Response.Write(xml);
}
我试图从一个 aspx 页面使用如下:
protected void Page_Load(object sender, EventArgs e) {
order o = new order();
Server.Transfer(o, false);
}
我收到一个 HttpException:执行处理程序“PostTest.order”的子请求时出错。
如果我改为尝试像这样进行传输:
Server.Transfer("~/order.ashx?id=65", false)
我收到一个 HttpException:执行 /order.ashx 的子请求时出错。
我做错了还是有其他方法可以完成我想要的?
【问题讨论】:
-
使用 Response.Redirect() 有什么问题吗?
-
aspx 页面正在接收来自另一台服务器(不是用户浏览器)的数据的 POST,我不确定它是否会进行重定向,但我会尝试。
-
为什么不直接让您的其他服务器调用处理程序,并将必要的逻辑从您的 ASPX 页面移到那里? ASPX 页面并不能真正成为另一个服务器调用的良好端点。
-
这不是我们的服务器,而且其他公司的人员也没有什么帮助,所以我试图解决这个问题。我可能最终会要求他们更改链接,但我认为有人可能知道快速解决方案。
-
可以将逻辑粘贴在 ASPX 页面中,从您的 Page_Load 方法调用 Response.Clear(),然后使用与处理程序中相同的逻辑直接处理从那里的调用。丑陋,但应该在紧要关头工作。
标签: c# asp.net httphandler