我有一个容器/主 Silverlight 应用程序。此容器动态下载 xap 并调用下载的 xap 中的特定用户控件。其中一些用户控件调用托管在服务器上的 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.aspxServiceReferences.ClientConfig
中的建议自动化。
这个问题有更好的解决方案吗?