Чтение из ServiceReferences.ClientConfig в WCF в Silverlight 3 в динамически загружаемом файле .xap - PullRequest
0 голосов
/ 23 октября 2009

Я использую Silverlight 3 Prism (CAB) с WCF

Когда я вызываю службу WCF в модуле Prism, я получаю ту же ошибку:

"Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт 'IMyService' в разделе конфигурации клиента модели сервиса. Это может быть связано с тем, что для вашего приложения не найден файл конфигурации, или из-за того, что элемент конечной точки, соответствующий этому контракту, не найден в клиентский элемент "

Оказывается, что он ищет в файле .xap оболочки файл ServiceReferences.ClientConfig, а не в файле ServiceReferences.ClientConfig модуля. Я добавил свою конечную точку и привязку к существующему файлу ServiceReferences.ClientConfig в моем приложении Silverlight Shell (оно вызывает собственные службы WCF).

Затем мне пришлось пересобрать приложение Shell, чтобы сгенерировать новый файл .xap для папки ClientBin моего веб-проекта.

Далее я перешел на настройку сервиса в коде:

// create the binding elements
BinaryMessageEncodingBindingElement binaryMessageEncoding = new BinaryMessageEncodingBindingElement();
HttpTransportBindingElement httpTransport = new HttpTransportBindingElement() 
{ MaxBufferSize = int.MaxValue, MaxReceivedMessageSize = int.MaxValue};

HttpsTransportBindingElement httpsTransport = new HttpsTransportBindingElement() 
{ MaxBufferSize = int.MaxValue, MaxReceivedMessageSize = int.MaxValue };

// add the binding elements into a Custom Binding
CustomBinding customBinding;
if (Application.Current.Host.Source.Scheme.Equals("https", StringComparison.InvariantCultureIgnoreCase))
{
    customBinding = new CustomBinding(binaryMessageEncoding, httpsTransport);
}
else
{
    customBinding = new CustomBinding(binaryMessageEncoding, httpTransport);
}

// create the Endpoint URL
EndpointAddress endpointAddress = new EndpointAddress(

"http://localhost/Test/TestModule/Test.TestModule.WCF/TestModuleService.svc");

// create an interface for the WCF service
var service = new TestModuleServiceClient(customBinding, endpointAddress);

1 Ответ

1 голос
/ 27 октября 2009

Этот пост имеет дело с похожей ситуацией:

Спасибо, Дамиан Шенкельман

http://blogs.southworks.net/dschenkelman

...