从类库访问Web方法

时间:2018-07-01 21:09:54

标签: c# asp.net web-services asp.net-ajax

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

我有一个类库项目,在其中创建了一个继承System.UI.Page的类,此新类具有一个称为(“ GetUsername”)的web方法。现在,我在Web项目中引用了该库,并且在default.aspx.cs中,我继承了新类(我在类库中上面创建的类)。现在,在aspx中,我编写了一个ajax函数来访问数据库中的数据,但是它为404的ajax url参数引发错误。

这是我的整个代码结构:

1。类库:

[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。带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);
            }
        });

任何人都可以指出问题所在吗?

1 个答案:

答案 0 :(得分:1)

我认为您必须在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);
            }
        });