微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET jQuery 错误:未知 Web 方法和无法使用 Visual Studio 2019 调试 aspx Web 表单应用程序

如何解决ASP.NET jQuery 错误:未知 Web 方法和无法使用 Visual Studio 2019 调试 aspx Web 表单应用程序

我有一个来自客户端的简单 ajax 调用: 这是在TestPage.aspx

<%@ Page Language="C#"%>
<%@ Import Namespace="System.Web.Services" %>

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <Meta charset="utf-8" />
    <title>Piece Of Cake </title>
    <link rel="stylesheet" type="text/css" href="../css/navigation.css">
    <link rel="stylesheet" type="text/css" href="../css/form.css">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
    <script type="text/javascript" src="../javascript/validateForm.js"></script>
    <script type="text/javascript" src="../javascript/effects.js"></script>
    <script>  
        $(document).ready(function () {          
            $.ajax({
                type: "POST",url: "TestPage/GetName/",contentType: "application/json; charset=utf-8;",dataType: "json",success: function (response) {
                    alert("success")
                },failure: function (response) {
                    alert("failure")
                },error: ErrorOccur
            });
        });
        function ErrorOccur(data,status,req) {
            alert("error:"+req.responseText + " " + status);
        }
 </script>
</head>

现在在 TestPage.aspx.cs 文件中:

namespace Foo.html
{
     
    public partial class TestPage : System.Web.UI.Page
    {
        protected void Page_Load(object sender,EventArgs e)
        {
            var t = 0;
        }

        [WebMethod]
        public static string GetName()
        {
            var chk = new check
            {
                subject = "hello! ",description = "13 Years Old"
            };
            return JsonConvert.SerializeObject(chk);
        }
        public class check
        {
            public string subject { get; set; }
            public string description { get; set; }
        }
    }
}

我可以在应用程序中调试 cs 文件,例如“RouteConfig.cs”。
但看起来我在调试 Web 表单部分时遇到了问题。
当我在 GetName 和 Page_Load 方法中设置断点后尝试调试应用程序时,调试器永远不会到达它们。应用程序正在运行,但我不断收到 ajax 错误内容为:

error:undefined parsererror

我使用的是 IIS express(VS 自带的)
所有调试都在 web.config 中设置:

<compilation debug="true" targetFramework="4.7.2" />

为什么我无法调试应用程序?
为什么它永远不会到达 GetName 方法

更新
我更改了 javascript 错误回调,现在我收到错误

unkNown web method GetName

解决方法

一个带有 .NET Framework 4.7.2 的简单示例,ASPX 页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MasterLess.aspx.cs" Inherits="WebForms_DDL_Selection.MasterLess" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <script src='<%= ResolveUrl("~/Scripts/jquery-3.4.1.min.js") %>' type="text/javascript"></script>
    <form id="form1" runat="server">
        <div>
        </div>
    </form>
    <script type="text/javascript">
        $(document).ready(function () {
            var name = 'kipi';

            jQuery.ajax({
                url: '<%= ResolveUrl("MasterLess.aspx/GetName") %>',type: "POST",dataType: "json",data: "{'name': '" + name + "'}",contentType: "application/json; charset=utf-8",success: function (data) {
                    alert(data.d);
                }
            });
        });
    </script>
</body>
</html>

以及 CS 背后的代码:

protected void Page_Load(object sender,EventArgs e)
{

}
        
[WebMethod]
public static string GetName(string name)
{
    return "Hey there " + name;
}

如果出现 401 错误,则需要在 ~/App_Start/RouteConfig.cs(或注释掉的行)中进行修改:

settings.AutoRedirectMode = RedirectMode.Off;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。