2014-02-12 119 views
4

我在aspx頁面的代碼隱藏中調用pageMethod。我得到整個頁面的響應,而不是webMethod響應。另外,我嘗試使用jquery調用相同的webMethod並獲取整個頁面作爲響應。ASP.NET AJAX PageMethods爲.NET 4.5調用加載整個頁面IIS 7.5

Client: 

    <asp:ScriptManager ID="scriptManager1" runat="server" EnablePartialRendering="True" 
EnablePageMethods="true" EnableScriptGlobalization="true" EnableScriptLocalization="true" > 

function TestNumber() { 
PageMethods.getNumber(ResponseTest); 
} 

function ResponseTest(response){ 
      var num = response.d; 
     } 

CodeBehind: 

[WebMethod] 
public static int getNumber() 
     { 
      return accountNumber; 
     } 

我使用.NET 4.5.1和IIS7.5,我認爲問題是在VS2013內置擴展名URLS realted來。我正在使用以下web.config sys.webserver

<system.webServer> 
     <validation validateIntegratedModeConfiguration="false" /> 
<modules runAllManagedModulesForAllRequests="true"> 
     <remove name="ScriptModule" /> 
     <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    </modules> 
     <handlers> 
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
      <remove name="OPTIONSVerbHandler" /> 
      <remove name="TRACEVerbHandler" /> 
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
     </handlers> 
     </system.webServer> 

我試圖通過jquery ajax調用相同,並獲得整個頁面。我錯過了什麼?

+0

可以任何一個請分享正確的sys.webserver配置爲AJAX頁面方法或jQuery的ajax調用方法,考慮IIS7 +中的默認擴展項。我正在使用.NET 4.5.1。謝謝。 – gkarch

+0

你有沒有想過這個? – AgapwIesu

回答

0

是的,它似乎是web.config設置。

嘗試從<modules>部分<remove name="ScriptModule" />

刪除此行只加

<system.webServer> 
<modules> 
    <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
</modules> 
</system.webServer> 
3

友好的URL(該擴展名的URL庫是默認的項目模板的一部分)不支持程序的[的WebMethod]調用。如果您必須使用[WebMethod],請從項目中卸載Friendly URLs。這可以從Nuget Package Manager window完成。

刪除此包後,可能需要修復項目和Web.config文件中的鏈接以添加缺少的.aspx擴展名。

4

如果使用的是友好的URL,然後加入

PageMethods.set_path(PageMethods.get_path() + '.aspx'); 

到您的js

祝你好運!