Приложение silverlight НЕ просматривает web.config хост-сервера - он находится на стороне сервера и не виден приложению silverlight, работающему на клиенте. Приложение Silverlight просматривает свой собственный файл ServiceReferences.clientconfig или URL-адрес, который указывается программно при создании локального прокси-сервера службы в коде.
Итак, у вас есть 2 варианта:
1. Измените ServiceReferences.clientconfig перед созданием развертываемой версии приложения Silverlight.
2. Используйте код для создания ваших конечных точек на стороне клиента с URL.
Мы используем второй вариант, потому что нам нравится иметь стандартный программный интерфейс, который настраивает наши конечные точки. Мы делаем что-то вроде этого (но не с MaxValue, если это общедоступная служба, конечно):
public ImportServiceClient CreateImportServiceClient()
{
return new ImportServiceClient(GetBinding(), GetServiceEndpoint("ImportService.svc"));
}
public ExportServiceClient CreateExportServiceClient()
{
return new ExportServiceClient(GetBinding(), GetServiceEndpoint("ExportService.svc"));
}
protected override System.ServiceModel.Channels.Binding GetBinding()
{
BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
binding.MaxBufferSize = int.MaxValue;
binding.MaxReceivedMessageSize = int.MaxValue;
binding.SendTimeout = TimeSpan.MaxValue;
binding.ReceiveTimeout = TimeSpan.MaxValue;
return binding;
}
protected EndpointAddress GetServiceEndpoint(string serviceName)
{
if (Settings == null)
{
throw new Exception("Service settings not set");
}
return
new EndpointAddress(ConcatenateUri(Settings.ServiceUri,serviceName));
}
protected EndpointAddress GetServiceEndpoint(string serviceName, Uri address)
{
if (Settings == null)
{
throw new Exception("Service settings not set");
}
return new EndpointAddress(ConcatenateUri(address, serviceName));
}
Такие классы, как «ImportServiceClient» и «ExportServiceClient» являются сгенерированными прокси-серверами при создании ссылок на службы для наших служб WCF. Параметр Settings.ServiceUri - это место, где мы храним адрес сервера, с которым мы должны разговаривать (в нашем случае он задается динамически через параметры плагина silverlight на странице, на которой он размещен, но вы можете использовать любую схему, которой хотите управлять) этот адрес).
Но если вы предпочитаете просто настроить ServiceReferences.ClientConfig, тогда вам не нужен такой код.