With the specific use-case that you provide, with a single async call, it would not be worth it, but, yes, you can invoke async calls from a web service:
[WebMethod]
public SomeResult SynchronousMethod() {
IAsyncResult someWork = BeginSomeAsyncWork();
IAsyncResult otherWork = BeginOtherAsyncWork();
WaitHandle[] all = new WaitHandle[] { someWork.AsyncWaitHandle, otherWork.AsyncWaitHandle };
// TODO: Do some synchronous work here, if you need to
WaitHandle.WaitAll(all); /* this is the important part, it waits for all of the async work to be complete */
var someWorkResult = EndSomeAsyncWork(someWork);
var otherWorkResult = EndSomeAsyncWork(otherWork);
// TODO: Process the results from the async work
// TODO: Return data to the client
}
The important thing here is the WaitHandle.WaitAll, which will block until all of the async work is complete. If you can process the results individually, you could use WaitHandle.WaitAny instead, but the code gets more complicated, and is a bit out of the scope of the question.