ASP.NET AJAX PageMethods 调用加载 .NET 4.5 IIS 7.5 的整个页面

gka*_*rch 5 asp.net ajax jquery pagemethods

我在 aspx 页面的代码隐藏中调用 pageMethod 。我得到整个页面的响应而不是 webMethod 响应。另外,我尝试使用 jquery 调用相同的 webMethod 并将整个页面作为响应。

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;
        }
Run Code Online (Sandbox Code Playgroud)

我正在使用 .NET 4.5.1 和 IIS7.5,我认为这个问题与 VS2013 中内置的无扩展 URLS 相关。我正在使用以下 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>
Run Code Online (Sandbox Code Playgroud)

我通过 Jquery ajax 调用尝试了相同的方法并获得了整个页面。我错过了什么吗?

Ash*_*rma 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>
Run Code Online (Sandbox Code Playgroud)