Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET AJAX PageMethods call load whole page for .NET 4.5 IIS 7.5

I am calling pageMethod in codebehind of aspx page. I get the response for whole page instead of webMethod response. Also, I tried calling the same webMethod using jquery and got the whole page as response.

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;
        }

I am using .NET 4.5.1 and IIS7.5 and I think the issue is realted to in built extensionless URLS in VS2013. I am using the following 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>

I tried the same through Jquery ajax call and got whole page. Am i missing any thing?

like image 706
gkarch Avatar asked Feb 12 '14 06:02

gkarch


2 Answers

If you are using friendly urls, then add

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

to your js

Good luck!

like image 62
Marvin Zumbado Avatar answered Oct 04 '22 12:10

Marvin Zumbado


Friendly URLs (the extensionless URL library that's part of the default project template) doesn't support invocation of [WebMethod] routines. If you must use [WebMethod], uninstall Friendly URLs from the project. This can be done from the Nuget Package Manager window.

Once you remove this package, you may need to fix links in your project and in your Web.config file to add back the missing .aspx extensions.

like image 27
Levi Avatar answered Oct 04 '22 12:10

Levi