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

时间:2014-02-12 06:29:28

标签: jquery asp.net ajax 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;
        }

我正在使用.NET 4.5.1和IIS7.5,我认为问题是在VS2013中构建的无扩展URL中实现的。我使用以下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调用尝试了相同的操作并获得了整页。我错过了什么吗?

3 个答案:

答案 0 :(得分:4)

如果您使用的是友好网址,请添加

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

到你的js

祝你好运!

答案 1 :(得分:3)

友好URL(作为默认项目模板一部分的无扩展URL库)不支持调用[WebMethod]例程。如果必须使用[WebMethod],请从项目中卸载友好URL。这可以从Nuget Package Manager window完成。

删除此软件包后,您可能需要修复项目和Web.config文件中的链接,以添加缺少的.aspx扩展名。

答案 2 :(得分: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>