2014-02-12 65 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

祝你好运!