Server.Transfer后出现“未知的Web方法”错误

时间:2008-12-09 12:38:10

标签: asp.net web-services redirect

我使用System.Web.Services.WebMethodAttribute创建一个可从客户端脚本调用的ASP.NET页面的公共静态方法:

test.aspx.cs

[System.Web.Services.WebMethod]
public static string GetResult()
{
    return "result";
}

Test.aspx文件

<asp:ScriptManager ID="sm" runat="server" EnablePageMethods="true" />

<script type="text/javascript">
    alert(PageMethods.GetResult());
</script>

该方法可以正常工作,但如果我使用

加载 test.aspx
Server.Transfer("test.aspx");

我收到“未知网络方法”错误。之后

Response.Redirect("test.aspx");

页面效果很好。

请问您能告诉我,错误的原因是什么?如何避免错误?非常感谢!

3 个答案:

答案 0 :(得分:1)

您在哪里收到错误 - 服务器或客户端?

如果是在客户端,请查看它正在尝试做什么。我怀疑你会发现它要求原始页面回应,而不是test.aspx。

答案 1 :(得分:1)

Server.Transfer将页面的处理(在服务器级别)传输到您指定的页面,但浏览器认为您仍在原始页面上:

所以,例如,你在start.aspx上,在后面的代码中你有Server.Transfer(“test.aspx”);

您的浏览器认为您仍然在start.aspx上,并且javascript将在start.aspx上向页面方法发送请求。

使用Response.Redirect,您的浏览器知道您现在正在使用test.aspx并且请求已正确发送。

答案 2 :(得分:0)

似乎调用set_path解决了这个问题:

<script type="text/javascript">
    PageMethods.set_path("test.aspx");
    alert(PageMethods.GetResult());
</script>