如何从单向(fire and forget)ASP.NET webservice调用中捕获异常

时间:2010-01-05 15:55:29

标签: asp.net web-services

我正在调用一个标记为单向的ASP.NET Web服务。我在try catch块中包装了调用Web服务的代码,但它没有捕获Web服务抛出的异常。当我通过在浏览器中输入url来单独测试webservice时,它会抛出一个错误,但由于某种原因,异常不会发送到调用代码。这是示例代码

/// <summary>
/// Summary description for WebService
/// </summary>
[WebService(Namespace = "http://mycompany.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class TestWebService : System.Web.Services.WebService
{
    [SoapDocumentMethod(OneWay = true)]
    [WebMethod(Description="Start a long running process.")]
    public void LongRunningProcess()
    {
        //do some long process
    }
}

//calls proxy class method
TestWebService testWebService = new TestWebService();
testWebService.Timeout = Timeout.Infinite;
testWebService.Credentials = CredentialCache.DefaultCredentials;
testWebService.Url = <url> //the web service url
testWebService.LongRunningProcess()

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我不相信你可以。

说明方法的全部意义在于将其标记为“即发即忘”,客户端不必等待调用该方法。

一旦服务器解析了请求,并且经常在它实际调用该方法之前,它就会返回http 202,此时客户端会继续运行。