Home > front end >  When I call a function in asp.net webforms from asp.net core MVC using Ajax is not hitting the targe
When I call a function in asp.net webforms from asp.net core MVC using Ajax is not hitting the targe

Time:04-18

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

CodePudding user response:

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);
    }
}
  • Related