'When I call a function in asp.net webforms from asp.net core MVC using Ajax is not hitting the target?

I have two project such as Main Project in Dot net Core MVC and Target project in ASP.NET framework webforms I have a Test Method in Webform in Target Project , But I want access the method from Main project using jQuery Ajax But this Code Does not hit the target Method..

From Main Project

    $('#btnTest').click(function () {
        AjaxCall();
    });
    function AjaxCall() {

        $.ajax({
            type: 'GET',
            crossDomain: true,
            dataType: 'jsonp',
            url: 'https://localhost:44332/WebForm1.aspx/TestMethod',
            success: function (jsondata) {
                alert('Success');
            },
            error: function (request, error) {
                alert("Failed");
            }
        })
    }
</script>

//Target Project Code behind

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
namespace TargetProject
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        [WebMethod]
        public static string TestMethod()
        {
            return "Success";
        }
    }
} 

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here



Solution 1:[1]

ASP.NET AJAX page methods only support POST requests for security reasons. If you change the method to POST, you can't use JSONP as dataType.

Change your code in ASP.NET Core below:

<script>
    $('#btnTest').click(function () {
         AjaxCall();
    });
    function AjaxCall() {

        $.ajax({
            type: 'POST',          //change here.....
            crossDomain: true,
            dataType: 'json',      //change here.....
            contentType: "application/json; charset=utf-8",       //add this...
            url: 'https://localhost:44332/WebForm1.aspx/TestMethod',
            success: function (jsondata) {
                alert('Success');
            },
            error: function (request, error) {
                alert("Failed");
            }
        })
    }     
</script>

Be sure you have configured cors in web.config file in WebForms:

<configuration>
  <system.webServer>  
    <httpProtocol>  
      <customHeaders>  
       <add name="Access-Control-Allow-Headers" value="accept, content-type" />  
        <add name="Access-Control-Allow-Origin" value="*" />  
        <add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS" />  
      </customHeaders>  
    </httpProtocol>  
  </system.webServer>  
  //.....
</configuration>

Be sure change your RouteConfig.cs in App_Start folder in WebForms:

public static class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        var settings = new FriendlyUrlSettings();
        //settings.AutoRedirectMode = RedirectMode.Permanent;
        settings.AutoRedirectMode = RedirectMode.Off;

        routes.EnableFriendlyUrls(settings);
    }
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1