在WebApi中调用异步REST方法显示为未找到的方法

时间:2017-05-21 13:46:47

标签: android rest asp.net-web-api

我使用以下方法使用Web Api:

    [HttpPost]
    public HttpResponseMessage Complete(__ServiceComplete ServiceCompleteInfo)
    {
        HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.BadRequest);

                // Send SMS to User for completion
                //////////////////////////////////////////////////////////////////
                SmsBL blSms = new SmsBL();
                blSms.SendServiceCompleteSms(ServiceCompleteInfo.ProposalId, ServiceCompleteInfo.CallId);


                response = new HttpResponseMessage(HttpStatusCode.OK);
            }

        return response;
    }

SendServiceCompleteSms函数是异步的。

现在,我从Android应用程序调用此函数,并使用调试器监视所有内容。

如果我评论该行并且没有调用SendServiceCompleteSms,我会在我的Android应用程序中收到Http.OK响应。

如果我取消注释SendServiceCompleteSms,则会发送一条短信,我可以看到该方法从服务器返回Http.OK。但是,在Android内部我得到Java.io.FileNotFoundException,Http代码'内部服务器错误'(500),好像找不到方法一样。

知道怎么处理这个吗?

1 个答案:

答案 0 :(得分:0)

不是找不到方法,the SendServiceCompleteSms method抛出异常。

另外,你说SendServiceCompleteSms方法是异步的,但你是同步调用它的。最好这样做:

[HttpPost]
public async Task<HttpResponseMessage> CompleteAsync(__ServiceComplete ServiceCompleteInfo)
{
    HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.BadRequest);

            // Send SMS to User for completion
            //////////////////////////////////////////////////////////////////
            SmsBL blSms = new SmsBL();
            await blSms.SendServiceCompleteSms(ServiceCompleteInfo.ProposalId, ServiceCompleteInfo.CallId);


            response = new HttpResponseMessage(HttpStatusCode.OK);
        }

    return response;
}