C# 从类库访问Webmethods

C# 从类库访问Webmethods,c#,asp.net,web-services,asp.net-ajax,C#,Asp.net,Web Services,Asp.net Ajax,我在我的一个类库中定义了一个WebMethod方法,我想在aspx页面中访问它 我有一个类库项目,我在其中创建了一个继承System.UI.Page的类,这个新类有一个名为(“GetUsername”)的webmethod函数。现在我已经在我的web项目中引用了这个库,并且在default.aspx.cs中我继承了一个新类(我在上面的类库中创建的那个)。现在在aspx中,我编写了一个ajax函数来访问数据库中的数据,但是它在404中为ajaxurl参数抛出了错误 以下是我的整个代码结构: 一,。

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

我有一个类库项目,我在其中创建了一个继承System.UI.Page的类,这个新类有一个名为(“GetUsername”)的webmethod函数。现在我已经在我的web项目中引用了这个库,并且在default.aspx.cs中我继承了一个新类(我在上面的类库中创建的那个)。现在在aspx中,我编写了一个ajax函数来访问数据库中的数据,但是它在404中为ajaxurl参数抛出了错误

以下是我的整个代码结构:

一,。类库:

[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 };
        }
    }
二,。网页代码隐藏:

public partial class _default : WebMethodLibrary
    {
    }
三,。带有Ajax调用的aspx页面:

$.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页面名称,您已经提到您的页面名称是默认的。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);
            }
        });