序列不包含任何元素,Castle.Facilities.WcfIntegration.WcfClientExtension.ObtainServiceContract

问题描述:

我正在.NET4.5 WPF应用程序中工作。我收到了App.xml<desktop1:ReactiveBootstrapper x:Key="bootstrapper" />中显示的特殊异常,我认为这与添加新的Web服务方法有关。序列不包含任何元素,Castle.Facilities.WcfIntegration.WcfClientExtension.ObtainServiceContract

app.xml的

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary> 
       <desktop1:ReactiveBootstrapper x:Key="bootstrapper" /> 
      </ResourceDictionary> 
      <ResourceDictionary Source="Utilities/Styles/DefaultStyle.xaml" /> 
      <ResourceDictionary Source="Utilities/Styles/DataGridStyle.xaml" /> 
      <!--<ResourceDictionary Source="Utilities/Styles/ScrollViewerStyle.xaml"/>--> 
      <ResourceDictionary Source="Utilities/Styles/RoundedButtonStyle.xaml" /> 
      <ResourceDictionary Source="Utilities/Styles/ExpanderStyle.xaml" /> 
      <ResourceDictionary Source="Utilities/Styles/RadioButtonStyle.xaml" /> 
      <!--<ResourceDictionary Source="Utilities/Styles/DropDownStyle.xaml"/>--> 
     </ResourceDictionary.MergedDictionaries> 
     <BooleanToVisibilityConverter x:Key="boolToVis" /> 
     <iValueConverters:BooleanToVisibilityConverter x:Key="negatedBoolToVis" True="Collapsed" False="Visible" /> 
     <iValueConverters:NullToVisibilityConverter x:Key="nullToVis" VisibleWhenNull="True" /> 
     <valueConverters1:NotNullToVisibilityConverter x:Key="notNullToVis" VisibleWhenNotNull="True" /> 
     <valueConverters1:NotNullToCollapsedVisibilityConverter x:Key="notNullToCollapsedVis" 
                   VisibleWhenNotNull="True" /> 
     <valueConverters1:EnvironmentToBooleanConverter x:Key="EnvironmentToBooleanConverter" /> 
    </ResourceDictionary> 
</Application.Resources> 

堆栈跟踪:

at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri) 
    at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri) 
    at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream) 
    at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator) 
    at Corp.Desktop.App.InitializeComponent() in c:\dev\CCTech Main\Corp-Wills\Corp.Conveyancing.Desktop\App.xaml:line 1 
    at Corp.Desktop.App.Main() in c:\dev\CCTech Main\Corp-Wills\Corp.Conveyancing.Desktop\obj\x86\Debug\App.g.cs:line 0 
    at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
    at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
    at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ThreadHelper.ThreadStart() 

内堆栈跟踪:

at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source) 
    at Castle.Facilities.WcfIntegration.WcfClientExtension.ObtainServiceContract(ComponentModel model, IWcfClientModel clientModel) in d:\work\8dfeb153df23a288\src\Castle.Facilities.WcfIntegration\Client\WcfClientExtension.cs:line 239 
    at Castle.Facilities.WcfIntegration.WcfClientExtension.ResolveClientModel(ComponentModel model) in d:\work\8dfeb153df23a288\src\Castle.Facilities.WcfIntegration\Client\WcfClientExtension.cs:line 231 
    at Castle.Facilities.WcfIntegration.WcfClientExtension.Kernel_ComponentModelCreated(ComponentModel model) in d:\work\8dfeb153df23a288\src\Castle.Facilities.WcfIntegration\Client\WcfClientExtension.cs:line 189 
    at Castle.MicroKernel.ComponentModelDelegate.Invoke(ComponentModel model) 
    at Castle.MicroKernel.DefaultKernel.RaiseComponentModelCreated(ComponentModel model) in d:\work\8dfeb153df23a288\src\Castle.Windsor\MicroKernel\DefaultKernel_Events.cs:line 72 
    at Castle.MicroKernel.DefaultKernel.Castle.MicroKernel.IKernelInternal.CreateHandler(ComponentModel model) in d:\work\8dfeb153df23a288\src\Castle.Windsor\MicroKernel\DefaultKernel.cs:line 273 
    at Castle.MicroKernel.DefaultKernel.AddCustomComponent(ComponentModel model) in d:\work\8dfeb153df23a288\src\Castle.Windsor\MicroKernel\DefaultKernel.cs:line 260 
    at Castle.MicroKernel.Registration.ComponentRegistration`1.Castle.MicroKernel.Registration.IRegistration.Register(IKernelInternal kernel) in d:\work\8dfeb153df23a288\src\Castle.Windsor\MicroKernel\Registration\ComponentRegistration.cs:line 1122 
    at Castle.MicroKernel.DefaultKernel.Register(IRegistration[] registrations) in d:\work\8dfeb153df23a288\src\Castle.Windsor\MicroKernel\DefaultKernel.cs:line 501 
    at Castle.MicroKernel.Registration.BasedOnDescriptor.TryRegister(Type type, IKernel kernel) in d:\work\8dfeb153df23a288\src\Castle.Windsor\MicroKernel\Registration\BasedOnDescriptor.cs:line 512 
    at Castle.MicroKernel.Registration.FromDescriptor.Castle.MicroKernel.Registration.IRegistration.Register(IKernelInternal kernel) in d:\work\8dfeb153df23a288\src\Castle.Windsor\MicroKernel\Registration\FromDescriptor.cs:line 184 
    at Castle.MicroKernel.Registration.BasedOnDescriptor.Castle.MicroKernel.Registration.IRegistration.Register(IKernelInternal kernel) in d:\work\8dfeb153df23a288\src\Castle.Windsor\MicroKernel\Registration\BasedOnDescriptor.cs:line 558 
    at Castle.MicroKernel.DefaultKernel.Register(IRegistration[] registrations) in d:\work\8dfeb153df23a288\src\Castle.Windsor\MicroKernel\DefaultKernel.cs:line 501 
    at Castle.Windsor.WindsorContainer.Register(IRegistration[] registrations) in d:\work\8dfeb153df23a288\src\Castle.Windsor\Windsor\WindsorContainer.cs:line 483 
    at Corp.Desktop.ReactiveBootstrapper.RegisterWcfServices() in c:\dev\CCTech Main\Corp-Wills\Corp.Conveyancing.Desktop\ReactiveBootstrapper.cs:line 101 
    at Corp.Desktop.ReactiveBootstrapper.Configure() in c:\dev\CCTech Main\Corp-Wills\Corp.Conveyancing.Desktop\ReactiveBootstrapper.cs:line 146 
    at Caliburn.Micro.BootstrapperBase.StartRuntime() in c:\Projects\caliburnmicro\src\Caliburn.Micro.Silverlight\Bootstrapper.cs:line 98 
    at Caliburn.Micro.BootstrapperBase.Start() in c:\Projects\caliburnmicro\src\Caliburn.Micro.Silverlight\Bootstrapper.cs:line 49 
    at Corp.Desktop.ReactiveBootstrapper..ctor() in c:\dev\CCTech Main\Corp-Wills\Corp.Conveyancing.Desktop\ReactiveBootstrapper.cs:line 66 

它吹ü在this.Start();上的Reactive bootstrapper构造函数中,我无法进一步介绍。

public class ReactiveBootstrapper : BootstrapperBase { 
public ReactiveBootstrapper() 
    { 
     this.Log.Info("Starting bootstrapper"); 
     this.Start(); 
    } 
} 

BootstrapperBaseCaliburn.Micro我假设的东西炸毁了依赖注入。

有没有人遇到过这个错误,并知道这里发生了什么?或者有想法如何进一步调试?,我相信异常开始出现后向Web服务添加额外的方法,但我不是100%确定。如果你需要更多的信息,只需要问。

+0

*序列不包含任何元素*这意味着某些IEnumerable/collection是空的,但它不应该如此。当您在空IEnumerable上使用First()时,也会引发这种异常。虽然我不熟悉其他涉及的代码。 – 2014-10-09 16:15:24

+0

@KingKing在这种情况下,它是'Single()',因为您可以从内部StarckTrace顶部的堆栈跟踪中看到,无论如何。我在这里有点绝望,所以任何形式的帮助都非常感谢。 – 2014-10-09 16:45:45

事实证明,我将没有支持Web服务的Interface添加到所有Web服务接口被保留的'错误'文件夹中。

public static void RegisterWcfServices() 
    { 
     Container.Register(
      Types.FromAssemblyContaining<ITransactionService>() 
       .InSameNamespaceAs<ITransactionService>() 
       .Configure(
        x => 
        x.Named(x.Implementation.Name) 
         .AsWcfClient(
          new DefaultClientModel 
           { 
            Endpoint = 
             WcfEndpoint.BoundTo(new WSHttpBinding(SecurityMode.Transport) { MaxReceivedMessageSize = int.MaxValue }) 
             .At(string.Format("https://{0}/{1}.svc", GetServerName(), x.Name.Substring(1))) 
           }) 
         .IsFallback())); 
    } 

上面的机制然后拿起接口,因为没有WebService支持它爆炸。