2008-12-09 86 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並且請求被正確發送。