从 Class 库访问 Webmethods

Accessing Webmethods from Class Library

我在我的 class 库之一中定义了一个 WebMethod 方法,我想在 aspx 页面中访问它。

我有 class 库项目,我在其中创建了一个继承 System.UI.Page 的 class,这个新的 class 有一个名为 ("GetUsername").现在我在我的 web 项目中引用了这个库,并且在 default.aspx.cs 中我继承了新的 class(我在上面的 class 库中创建的那个)。现在在 aspx 中我写了一个 ajax 函数来访问数据库中的数据,但是它会为 ajax url 参数和 404.

抛出错误

这是我的整个代码结构:

1。 Class 图书馆:

[ScriptService]
    public class WebMethodLibrary : Page
    {
        [WebMethod]
        public static object GetCurrentUserName()
        {
            Alistar.Data.AlistarDataContext db = new Alistar.Data.AlistarDataContext();
            Guid gUser = new Guid("8FEF8333-F1AE-4E9E-95F9-07316CE39F73");
            var user = db.Users.Find(gUser);
            return new { Username = user.Username };
        }
    }

2。网页代码隐藏:

public partial class _default : WebMethodLibrary
    {
    }

3。 aspx 页面 Ajax 调用:

$.ajax({
            url: 'GetCurrentUserName',
            dataType: 'json',
            type: 'post',
            contentType: 'application/json',
            data: {},
            processData: false,
            success: function (data, textStatus, jQxhr) {
                alert(JSON.stringify(data));
            },
            error: function (jqXhr, textStatus, errorThrown) {
                console.log(errorThrown);
            }
        });

谁能指出可能是什么问题?

我认为你必须在 url 中的方法名称之前指定你的 aspx 页面的名称你已经提到你的页面名称是 default.aspx 如果它在根目录中那么调用将类似于或者您必须在页面名称之前添加您的目录名称。

$.ajax({
            url: '~/default.aspx/GetCurrentUserName',
            dataType: 'json',
            type: 'post',
            contentType: 'application/json',
            data: {},
            processData: false,
            success: function (data, textStatus, jQxhr) {
                alert(JSON.stringify(data));
            },
            error: function (jqXhr, textStatus, errorThrown) {
                console.log(errorThrown);
            }
        });