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文件中,我有:

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

im使用IIS express(VS附带(
所有调试都在web.config中设置:

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

为什么我不能调试应用程序
为什么它从未到达GetName方法?

UPDATE
我更改了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;

最新更新