为什么 PageMethods 对象未定义?

Why is PageMethods object undefined?

我已经阅读了几个类似问题的答案,其中 none 个回答了我的问题。我已经尝试了我能想到的一切。这是我的代码的样子:

<asp:ScriptManager ID="ScriptMgr" runat="server" EnablePageMethods="true"></asp:ScriptManager>
<asp:TextBox ID="TextBox" runat="server" onblur="textboxOnBlur()"></asp:TextBox>
<script>
     function onSuccess() {
        alert("success");
    }

    function onFailure() {
        alert("failure");
    }

    function textboxOnBlur() {
        PageMethods.CheckDBForCodes(onSuccess, onFailure);
        //alert("test");
    }

</script>

这是 PageMethods 应该调用的服务器端函数:

 <System.Web.Services.WebMethod()>
Protected Shared Sub CheckDBForCodes() 
    `search DB for codes
End Sub

出于某种原因,我仍然收到指出 PageMethods 未定义的错误消息。如您所见,当您点击文本框以外的地方时,将调用 textboxOnBlur 函数。我错过了什么吗?

未定义 PageMethods 对象的原因是服务器端函数的访问修饰符设置为 Protected。我将其更改为 Public,一切都很好。