silverlight – 动态加载的xap中的WCF服务调用失败

我有一个容器/主Silverlight应用程序.此容器动态下载xaps并调用下载的xaps中的特定用户控件.
其中一些用户控件调用托管在服务器上的WCF服务.

当用户控制下载的xap调用WCF服务时,会出现以下错误:

System.InvalidOperationException was unhandled by user code
Message=Cannot find 'ServiceReferences.ClientConfig' in the .xap application 
package. This file is used to configure client proxies for web services,and 
allows the application to locate the services it needs. Either include this 
file in the application package,or modify your code to use a client proxy
constructor that specifies the service address and binding explicitly. Please
see inner exception for details.
StackTrace:
   at System.ServiceModel.Configuration.ServiceModelSectionGroup.
       GetSectionGroup()
   at System.ServiceModel.Configuration.ServiceModelSectionGroup.get_Current()
   at System.ServiceModel.Description.ConfigLoader.LookupChannel(
       String configurationName,String contractName,Boolean wildcard)
   at System.ServiceModel.Description.ConfigLoader.LoadChannelBehaviors(
       ServiceEndpoint serviceEndpoint,String configurationName)
   at System.ServiceModel.ChannelFactory.ApplyConfiguration(
       String configurationName)
   at System.ServiceModel.ChannelFactory.InitializeEndpoint(
       String configurationName,EndpointAddress address)
   at System.ServiceModel.ChannelFactory`1..ctor(
       String endpointConfigurationName,EndpointAddress remoteAddress)
   at System.ServiceModel.EndpointTrait`1.CreateSimplexFactory()
   at System.ServiceModel.EndpointTrait`1.CreateChannelFactory()
   at System.ServiceModel.ClientBase`1.CreateChannelFactoryRef(
       EndpointTrait`1 endpointTrait)
   at System.ServiceModel.ClientBase`1.InitializeChannelFactoryRef()
   at System.ServiceModel.ClientBase`1..ctor()
   at LoadableSilverlightApplication.MyServiceReference.MyServiceClient..ctor()
   at LoadableSilverlightApplication.Views.MyLoadablePage.textBlock2_Loaded(
       Object sender,RoutedEventArgs e)
   at MS.Internal.CoreInvokeHandler.InvokeEventHandler(
       Int32 typeIndex,Delegate handlerDelegate,Object sender,Object args)
   at MS.Internal.JoltHelper.FireEvent(
       IntPtr unmanagedObj,IntPtr unmanagedObjArgs,Int32 argsTypeIndex,Int32 actualArgsTypeIndex,String eventName)
  InnerException: System.Xml.XmlException
      Message=Cannot find file 'ServiceReferences.ClientConfig' in the
          application xap package.
      LineNumber=0
      LinePosition=0
      StackTrace:
           at System.Xml.XmlXapResolver.GetEntity(
               Uri absoluteUri,String role,Type ofObjectToReturn)
           at System.Xml.XmlReaderSettings.CreateReader(
               String inputUri,XmlParserContext inputContext)
           at System.Xml.XmlReader.Create(
               String inputUri,XmlReaderSettings settings,XmlParserContext inputContext)
           at System.ServiceModel.Configuration.ServiceModelSectionGroup.
               GetSectionGroup()
      InnerException:
          ...

异常告诉我ServiceReferences.ClientConfig以某种方式不可见……即使它被打包在下载的xap中.

我确实看到帖子表明ServiceReferences.ClientConfig与容器xap一起打包,这种方法有效.但是我不相信这是一个很好的解决方案.

另一种方法是按照http://weblogs.asp.net/manishdalal/archive/2009/02/23/silverlight-servicereferences-clientconfig-alternatives.aspx中的建议自动化ServiceReferences.ClientConfig.

这个问题有更好的解决方案吗?

解决方法

WCF只会查看主应用程序XAP的ClientConfig文件,而不会查找已下载的任何其他XAP.因此,您需要将配置放在主XAP中或自己提供配置,您链接的博客文章显示了一种方法.

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...