【发布时间】:2010-03-20 15:03:50
【问题描述】:
我有一个基于页面的 web 方法,它使用 [WebMethod] 可以正常工作,即
[WebMethod]
public static void DoSomethingOnTheServer()
{
}
我还有一个自定义页面处理程序可以使 SEO 友好的 URL 成为可能,
例如
http://localhost/MySite/A_nice_url.ext => http://localhost/MySite/page.aspx?id=1
我在我的 ProcessRequest 处理程序中使用 Server.Transfer 来实现这一点。这一切都很好。此外,当用户请求 URL 时,我的页面方法可以正常工作,例如:
http://localhost/MySite/page.aspx?id=1
但是,当用户请求自定义处理的 URL 时,即
http://localhost/MySite/A_nice_url.ext
客户端报告PageMethod已经成功完成,但是根本没有调用。
我猜它与我的自定义处理程序有关,因此我对其进行了修改以包含 PathInfo:
public void ProcessRequest(HttpContext context)
{
// ... (code to determine id) ...
// Transfer to the required page
string actualPath =
"~/page.aspx" + context.Request.PathInfo + "?id=" + determinedId;
context.Server.Transfer(actualPath);
}
所以现在如果调用 PageMethod,它会导致:
http://localhost/MySite/page.aspx/DoSomethingOnTheServer?id=1
我想知道这是否是调用 PageMethod 的正确语法。
当我尝试使用 Server.Transfer 报告时:
执行 /MySite/page.aspx/DoSomethingOnTheServer 的子请求时出错
我已经尝试过HttpContext.RewritePath,但不确定如何真正让它执行请求。
这似乎不起作用,有什么想法吗?
【问题讨论】:
标签: asp.net