WebMethod is not called (triggered) through PageMethod

8

I'm not able to fire a WebMethod on a project created in Visual Studio 2013 (WebForms Application).

If I create a project, for example, in Visual Studio 2008 and migrate to Visual Studio 2013, it works correctly. If I create a new project in Visual Studio 2013 the above problem occurs.

I searched a lot to see if I needed to add a key in web.config , but I did not find anything about it.

Follow the ASPX code:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="TestePageMethods._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server" />

    <script type="text/javascript">

        function testeClick() {            
            PageMethods.SayHello("Name");        
        }  

    </script>

    <input type="button" value="Say Hello" onclick="testeClick();" />
    </form>
</body>
</html>

And aspx.vb:

Partial Public Class _Default
 Inherits System.Web.UI.Page

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

 End Sub

 <System.Web.Services.WebMethod(True)> _
 Public Shared Function SayHello(ByVal name As String) As String
    Return "Hello " & name
 End Function

End Class

EDIT: Personally, one more information I discovered now:

Working only on VS2013:

  • new project.
  • Web - ASP.NET Web Application.
  • Select the "Empty" template.
  • Insert a "Default.aspx" page, WebMethod works normally ...

Now, if you create a new project and select the "WebForms" template, it does not work ...

Is there no cross-referencing? or a different setting?

    
asked by anonymous 13.01.2014 / 14:53

2 answers

4

I found the solution to my problem: What prevented WebMethod from being called was the reference with System.Web.Optimization . I'm not sure how he does it, but since I will not use it right now, I've decided to remove it:

System.Web.Optimization and Microsoft.AspNet.Web.Optimization.WebForms

You must also remove the following from web.config :

<namespaces>
    <add namespace="System.Web.Optimization" />
</namespaces>

<add assembly="Microsoft.AspNet.Web.Optimization.WebForms" 

namespace="Microsoft.AspNet.Web.Optimization.WebForms" tagPrefix="webopt" />

<dependentAssembly>
        <assemblyIdentity name="WebGrease" culture="neutral" 

publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
      </dependentAssembly>

All right now! Thanks to everyone who helped me with the problem! :)

    
14.01.2014 / 03:45
0

Friend, the problem was not because of System.Web.Optimization.

In fact, the problem is because of why To make this PageMethod call work in your WebForms application you need to change the RouteConfig.cs file (located in ~ ~ / App_Code / RoutConfig.cs) as follows:

settings.AutoRedirectMode  = RedirectMode.Permanent;

To:

settings.AutoRedirectMode  = RedirectMode.Off;

The same goes for calls with Jquery.

    
04.07.2015 / 16:35