【问题标题】:ASP.NET Fire and Forget (One Way) Web ServiceASP.NET 即发即弃(一种方式)Web 服务
【发布时间】:2009-10-09 02:41:58
【问题描述】:

我已经在 ASP.NET 中创建了一个常规的旧 ASMX Web 服务,并将 SoapDocumentMethod(OneWay = true)] 添加到函数调用中,因为我读过这应该使调用异步。但是我在我的代码中调用它并且它绝对不会使调用异步,我的页面只是坐在那里等待函数完成工作。什么给了?

[SoapDocumentMethod(OneWay = true)]
[WebMethod(EnableSession = true)]
public void UpdateAccounts()
{
 //do work
}

//call the function
GlobalServices service = new GlobalServices();
service .UpdateAccounts()

【问题讨论】:

    标签: c# asp.net asynchronous service


    【解决方案1】:

    您仍然必须使用 Async 方法进行调用。在这种情况下,您应该拨打service.UpdateAccountsAsync()

    【讨论】:

    • 除了 OneWay 的文档声明 Web 服务将在执行服务方法之前立即返回 HTTP 状态代码 202,所以我认为使服务函数异步不会有帮助.
    • 这是我对它如何工作或应该如何工作的理解。
    【解决方案2】:

    你要返回一个值吗? OneWay 的文档指出“即发即弃”的 Web 方法不能返回值或没有参数。

    http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soapdocumentmethodattribute.oneway(VS.80).aspx

    【讨论】:

    • 不,不返回任何东西。
    • 尝试删除您的函数并查看 Web 服务是否返回。如果是这样,那么我想您确实需要异步触发您的服务功能,正如 Erich 所说。
    • 我唯一能想到的另一件事是“EnableSession”属性以某种方式干扰了异步行为。尝试删除它。
    猜你喜欢
    • 2011-06-12
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    相关资源
    最近更新 更多