小编Dar*_*ski的帖子

在asp.net MVC控制器中调用异步外部Web服务

在Asp.net MVC控制器(GET方法)中,我调用外部Web服务 - 用于IP的地理位置 - 返回IP位置的json数据.如何使调用异步,因此堆栈可以在等待服务响应时继续.当GEO IP请求完成时,我希望能够更新数据库.这是当前的同步代码:

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); …
Run Code Online (Sandbox Code Playgroud)

c# model-view-controller asynchronous external webrequest

5
推荐指数
1
解决办法
8077
查看次数