从localhost加载数据时,类型提供程序挂起应用程序

时间:2017-01-17 14:47:49

标签: asp.net-web-api f# xamarin.android type-providers

我有理由相信我使用的类型提供商正在挂起我在Android模拟器上运行的应用。

在我的Xamarin.Forms应用程序主页面上,我有以下加载操作:

protected override void OnAppearing()
{
    _viewModel.Load();
    return; // Never gets reached when using Type Provider...
}

我的viewmodel具有以下加载操作:

public void Load() => Cars = new ObservableCollection<Car>(getCars());

我的F#代码如下:

open FSharp.Data

// https://forums.xamarin.com/discussion/1199/how-to-make-our-remote-host-127-0-0-1-reachable-from-android-device-monoandroid-using-vs2010
[<Literal>]      (* "10.0.2.2" is the workaround IP address for local host *)
let JsonPathDesignTime = "http://localhost:48213/api/cars"
let JsonPathRunTime =    "http://10.0.2.2:48213/api/cars"
type Repository =         JsonProvider<JsonPathDesignTime>

type Car = { Make:string ; Model:string }

let getCars() =

    try
        Repository.Load JsonPathRunTime
        |> Array.toSeq
        |> Seq.map(fun x -> { Make=x.Make ; Model=x.Model })

    with error -> failwith error.Message

我没有观察到上面代码抛出的任何异常。但是,返回客户来电者会发生 NOT

注意:

如果我没有使用类型提供程序,而是返回一个空序列,那么应用程序会挂起。

示例:

type Car = { Make:string ; Model:string }

let getCars() : Car seq =
    Seq.empty

0 个答案:

没有答案