Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF异步方法仅在调试时工作_C#_Wcf_Windows Phone 8.1_Win Universal App - Fatal编程技术网

C# WCF异步方法仅在调试时工作

C# WCF异步方法仅在调试时工作,c#,wcf,windows-phone-8.1,win-universal-app,C#,Wcf,Windows Phone 8.1,Win Universal App,我有一个奇怪的问题,我正在构建一个通用的应用程序,当我调试时一切都正常,但是当我在没有调试的情况下运行时,模拟器试图打开应用程序,然后崩溃 以下是我知道失败的代码: private void MenuPage_Loaded(object sender, RoutedEventArgs e) { SetItemSource(); } private async void SetItemSource() { MenuItems = await AppWinService.GetMen

我有一个奇怪的问题,我正在构建一个通用的应用程序,当我调试时一切都正常,但是当我在没有调试的情况下运行时,模拟器试图打开应用程序,然后崩溃

以下是我知道失败的代码:

private void MenuPage_Loaded(object sender, RoutedEventArgs e)
{
   SetItemSource();
}

private async void SetItemSource()
{
   MenuItems =  await AppWinService.GetMenuEntriesAsync();     
   ItemSource = new ObservableCollection<AlphaKeyGroup<Menu>>
         ((AlphaKeyGroup<Menu>.CreateGroups(MenuItems,
                                            CultureInfo.CurrentUICulture, 
                                            s => s.MenuName, 
                                            true)));

   ((CollectionViewSource)Resources["MenuGroups"]).Source = ItemSource;

 }
private void MenuPage\u已加载(对象发送方、路由目标方)
{
SetItemSource();
}
私有异步void SetItemSource()
{
MenuItems=等待AppWinService.GetMenutRiesAsync();
ItemSource=新的ObservableCollection
((AlphaKeyGroup.CreateGroups)菜单项,
CultureInfo.CurrentUICulture,
s=>s.MenuName,
对),;
((CollectionViewSource)资源[“菜单组”])。源=项源;
}

有什么建议吗?提前感谢。

您确定
菜单项在所有情况下都有效吗?超时时会发生什么

为安全起见,为什么不检查null:

MenuItems =  await AppWinService.GetMenuEntriesAsync();   

if ((MenuItems != null) && (MenuItems.Any())
{
   ItemSource = new ObservableCollection<AlphaKeyGroup<Menu>>(
                                          (AlphaKeyGroup<Menu>.CreateGroups(MenuItems,
                                           CultureInfo.CurrentUICulture, 
                                           s => s.MenuName, 
                                           true)));

  ((CollectionViewSource)Resources["MenuGroups"]).Source = ItemSource;
}
else 
{ 
   MessageBox.Show("Failure to get data"); 
}
MenuItems=wait AppWinService.GetMenuEntriesAsync();
如果((MenuItems!=null)&&(MenuItems.Any())
{
ItemSource=新的ObservableCollection(
(AlphaKeyGroup.CreateGroups(菜单项,
CultureInfo.CurrentUICulture,
s=>s.MenuName,
对),;
((CollectionViewSource)资源[“菜单组”])。源=项源;
}
其他的
{ 
MessageBox.Show(“获取数据失败”);
}

嗨,Omega,是的,我确信它没有失败。我认为问题与调试时发现我的wcf服务有关,因为WcfSVHost在右角我的时钟旁边打开,但当我不调试时,什么都没有发生,所以我不知道这似乎是发生了什么的线索。你有什么想法吗?@GroopsGroops好的,看更多的代码。也许除了我提到的检查之外,还要添加更多的检查。也许
CreateGroups
调用失败了。你需要确定确切的失败点在哪里……因为它在代码中的某个地方失败了,如果检查不正常,你永远不会知道。我开始在我的代码中放置这样的检查,因为你永远不知道什么时候/什么时候重新编码将失败,通过采用良好做法处理错误将在长期内节省一次时间。HTHHi Omega,我确信服务本身并没有失败,但在调试模式下运行时,Visual Studio为我托管服务,但我认为我必须在IIS中托管它配置应用程序以在那里找到它,这样它将在两个deb中都能工作ugging模式,没有调试。但我不知道如何做。我最终创建了一个托管在IIS中的服务,但同样的问题似乎发生了:(@GroopsGroops Visual Studio附带了一个名为
WcfTestClient
的用于测试web服务的应用程序。可以在Visual Studio安装目录
Common7\IDE
中找到该应用程序。您可以使用该应用程序在IIS中测试调用吗?另外,与其进行服务调用,不如将异步调用返回的信息剔除,然后调用它。运行它处于调试模式和发布模式。如果它工作,请在没有返回数据的情况下尝试它,然后使用10项。换句话说,执行否定测试以确定web服务失败调用是什么。