如何解决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 举报,一经查实,本站将立刻删除。