Javascript 如何在ASP.NET(SharePoint后台)中异步调用web方法

Javascript 如何在ASP.NET(SharePoint后台)中异步调用web方法,javascript,c#,asp.net,ajax,sharepoint-2013,Javascript,C#,Asp.net,Ajax,Sharepoint 2013,调用这个异步Web方法,我得到一个500错误。还有其他方法可以异步调用web方法吗 堆栈跟踪: “/”应用程序中出现服务器错误。 未知的web方法SendMessage。参数名称:methodName 描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源 异常详细信息:System.ArgumentException:未知的web方法 发送消息。参数名称:methodName 源错误: 在执行过程中生成了未处理的异常 当前web请求

调用这个异步Web方法,我得到一个500错误。还有其他方法可以异步调用web方法吗

堆栈跟踪:

“/”应用程序中出现服务器错误。 未知的web方法SendMessage。参数名称:methodName
描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源

异常详细信息:System.ArgumentException:未知的web方法 发送消息。参数名称:methodName

源错误:

在执行过程中生成了未处理的异常 当前web请求。关于货物来源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常

堆栈跟踪:

[ArgumentException:未知的web方法SendMessage。参数名称: 方法名称]
System.Web.Handlers.ScriptModule.OnPostAcquireRequestState(对象 发件人,EventArgs EventArgs)+728343
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +92 System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)+165

版本信息:Microsoft.NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.34248

ASPX代码隐藏:

namespace Any.Contact
{
    using System.Threading.Tasks;
    using System.Web.Services;

    public partial class ContactFormPage : PublishingLayoutPage
    {    
        [WebMethod]
        public static async Task<bool> SendMessage(string topic, string message)
        {
            return await SendEmail(topic, message);
        }
    }
}

您不需要使用Task,它将从JS调用为异步。它可以是返回bool的常规方法。 尝试:


除了这个答案,您可能还必须从方法中删除
static
关键字。我的答案有用吗?
namespace Any.Contact
{
    using System.Threading.Tasks;
    using System.Web.Services;

    public partial class ContactFormPage : PublishingLayoutPage
    {    
        [WebMethod]
        public static bool SendMessage(string topic, string message)
        {
            return SendEmail(topic, message);
        }
    }
}