2008-12-09 91 views
1

后,我用System.Web.Services.WebMethodAttribute,使一个ASP.NET页面的从客户端脚本调用一个公共静态方法:“未知Web方法”错误的Server.Transfer

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"); 

我收到“未知的Web方法”的错误。之后

Response.Redirect("test.aspx"); 

该页面运行良好。

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

回答

0

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

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

你从哪里收到错误 - 服务器或客户端?

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

+0

我有同样的问题在这里提到的 - http://www.west-wind.com/weblog/posts/152493.aspx – 2008-12-09 12:50:39

1

Server.Transfer的转移的处理页面的(服务器级别)到您指定的网页,但是浏览器认为你还是原来的页面上:

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

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

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