Aufruf der asynchronen externen web-service in asp.net MVC-controller

In der Asp.net MVC-controller (GET-Methode), bin ich den Aufruf externer web-service - für geolocation der IP - Rückgabe json-Daten für IP-Standort. Wie kann ich den Aufruf zu sein, async, damit der Stapel fortfahren können, während der Wartezeit die Antwort vom service. Wenn die GEO-IP-Anfrage fertige ich möchte in der Lage sein, um update auf die db. Hier ist der aktuelle sync-code:

public ActionResult SelectFacility(int franchiseId, Guid? coachLoggingTimeStampId)
{
    //...
    string responseFromServer = Helpers.GetLocationByIPAddress(userIpAddress);

    HomeModels.GeoLocationModel myojb = new HomeModels.GeoLocationModel();

    if (!String.IsNullOrEmpty(responseFromServer))
    {
        JavaScriptSerializer js = new JavaScriptSerializer();
        myojb = (HomeModels.GeoLocationModel)js.Deserialize(responseFromServer, typeof(HomeModels.GeoLocationModel));

    }
    //...
}
public static string GetLocationByIPAddress(string ipAddress)
{
    Stream resStream = null;
    string responseFromServer = "";
    try
    {
        string url = GeoLocationPath.FreeGeoIP + ipAddress;
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = "GET";
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        resStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(resStream);
        responseFromServer = reader.ReadToEnd();
        return responseFromServer;
    }
    catch (Exception ex)
    {
        //TODO handle this
    }
    finally
    {
        if (null != resStream)
        {
            resStream.Flush();
            resStream.Close();
        }
    }
    return responseFromServer;
}

Jeder Vorschlag - Threads, AsyncTask ?
Dank

  • WebRequest.GetResponseAsync?
Schreibe einen Kommentar