C# Windows Phone 8无法从App.xaml.cs调用WCF服务

C# Windows Phone 8无法从App.xaml.cs调用WCF服务,c#,wcf,windows-phone-8,app.xaml,wcfserviceclient,C#,Wcf,Windows Phone 8,App.xaml,Wcfserviceclient,我有一个简单的WindowsPhone8应用程序。当应用程序启动时,我需要验证用户身份,进行服务器调用。在InitializePhone应用程序中,我的WP8应用程序检查此数据是否已在以前的调用中获得并存储在IsolatedStorage中。如果IsolatedStorage中没有数据,则执行服务器调用。代码: if ((IsolatedStorageSettings.ApplicationSettings.Contains("loggedin")) && (Conve

我有一个简单的WindowsPhone8应用程序。当应用程序启动时,我需要验证用户身份,进行服务器调用。在InitializePhone应用程序中,我的WP8应用程序检查此数据是否已在以前的调用中获得并存储在IsolatedStorage中。如果IsolatedStorage中没有数据,则执行服务器调用。代码:

if ((IsolatedStorageSettings.ApplicationSettings.Contains("loggedin")) && 
    (Convert.ToString(IsolatedStorageSettings.ApplicationSettings["loggedin"]).ToLower() == "y"))
{
    RootFrame.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
}
else
{
    SC = new ServiceClient();
    SC.CheckDeviceCompleted += SC_CheckDeviceCompleted;
    SC.CheckDeviceAsync(Utility.GetStatus());
}
这是SC_CheckDevice完成的代码。CheckDeviceAsync恢复服务时引发此事件:

private void SC_CheckDeviceCompleted(object sender, CheckDeviceCompletedEventArgs e)
{
    string res = e.Result;
    if (!res.Equals(""))
    {
        IsolatedStorageSettings.ApplicationSettings["loggedin"] = "y";
        IsolatedStorageSettings.ApplicationSettings["id"] = res;
        RootFrame.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
    }
    else
    {
        RootFrame.Navigate(new Uri("/Authentication.xaml", UriKind.Relative));
    }
}
从服务器接收的数据用于选择应用程序的起始页。若接收到空字符串,则服务器上并没有注册任何数据:所以,用户必须登录。否则,用户可以立即访问应用程序的主页

问题是这段代码不起作用。具体来说,服务器调用未从服务接收,服务未接收任何内容,因此永远不会执行SC_CheckDeviceCompleted方法,因为未从服务接收任何内容,也未显示任何页面

SC实例在App.xaml.cs的App class中定义为公共静态属性:

public static ServiceClient SC { get; set; }

当从我使用本地ServiceClient变量而不是WP8应用程序的App.xaml.cs中定义的ServiceClient属性的任何其他页面调用我的服务时,我的服务都能正常工作。我无法使用App.xaml.cs文件中定义的ServiceClient属性从该文件中进行服务调用。为什么?问题出在哪里?

App.xaml的主要用途是保存资源和页面的一些生命周期事件,如应用程序启动和退出。你不能在里面打服务电话。用同样的逻辑在主页上这样做。

谢谢萨吉塔兰的回答。我需要服务的响应来选择正确的页面主页或身份验证页面。有什么方法可以做到这一点吗?在Landing.xaml.cs>中创建一个页面,比如Landing.xaml,调用服务,获取响应,并根据响应将用户导航到所需页面,希望有帮助: