2012-01-11 2 views
3

В моем клиентском приложении, я получаю следующее сообщение об ошибке:WCF - Ошибка клиент Endpoint Configuration

Could not find endpoint element with name 'QueuedService' and contract 
'IMyService' in the ServiceModel client configuration section. This might 
be because no configuration file was found for your application, or because no 
endpoint element matching this name could be found in the client element. 

Я использовал svutil.exe для создания прокси-клиента, я использую. Обычно я вручную катить свой собственный прокси-сервер, и я замечаю, сгенерированную версию интерфейса для контракта на обслуживание не был в пространстве имен я изначально указан в договоре на обслуживание:

// Auto-generated proxy 

namespace MyServices.Contracts 
{ 
    // Request object in correct namespace 

    [System.Runtime.Serialization.DataContractAttribute(
     Name="MyRequest", 
     Namespace="http://schemas.datacontract.org/2004/07/MyServices.Contracts")] 
    public class MyRequest 
    { 
     // ... 
    } 
} 

// Service contract NOT in namespace 

[System.ServiceModel.ServiceContractAttribute(
    ConfigurationName="IMyService")] 
public interface IMyService 
{ 
    // ... 
} 

Моего хост-приложении web.config Задает обслуживание конечных точек (один для MSMQ и один для TCP):

<system.serviceModel> 
<service> 

<!-- etc... -->  

<endpoint name="QueuedService" 
      address="net.msmq://localhost/private/MyQueue" 
      binding="netMsmqBinding" 
      bindingConfiguration="MsmqDefaultBinding_Local" 
      contract="MyService.Contracts.IMyService" /> 
<endpoint name="TcpService" 
      address="net.tcp://localhost/ServiceHost/TheService.svc" 
      contract="MyServices.Contracts.IMyService" 
      binding="netTcpBinding" 
      bindingConfiguration="netTcpWindowsBinding" /> 
</service> 
</system.serviceModel> 

клиентское приложение использует услугу, как это:

var endpointConfigName = GetEndpointConfigNameFromConfig(); 

using(var myServiceClient = new MyServiceClient(endpointConfigName)) 
{ 
    // Create Request object... 

    // Call service like so: 

    myServiceClient.SomeServiceMethod(requestObject); 
} 

и web.confi клиента g:

<client> 
    <endpoint name="QueuedService" 
      address="net.msmq://localhost/private/MyQueue" 
      binding="netMsmqBinding" 
      bindingConfiguration="MsmqDefaultBinding_Local" 
      contract="MyServices.Contracts.IMyService" /> 
    <endpoint name="TcpService" 
      address="net.tcp://localhost/ServiceHost/TheService.svc" 
      contract="MyServices.Contracts.IMyService" 
      binding="netTcpBinding" 
      bindingConfiguration="netTcpWindowsBinding" /> 
</client> 

Любые идеи ???

+0

Ошибка, похоже, связана с конфигурационным файлом клиента. Вы уверены, что у клиентского приложения есть связанный с ним файл app.config? –

+0

Работает ли конечная точка TCP? –

+0

Можете ли вы опубликовать полную конфигурацию клиента и интерфейс службы? – Rajesh

ответ

3

Кажется, что ConfigurationName в Generated proxy - это просто IMyService, а не MyServices.Contracts.IMyService. Таким образом, у ваших клиентов web.config вы можете просто заключить контракт как IMyService, а не полный, и проверить, работает ли это.

1

Это немного тривиально, но ваш app.config относится к процессу, в котором работает приложение? Например, если вы создали ссылку на службу в сборке/отдельном проекте, но вызываете ее из exe, которая ссылается на эту сборку, config должен быть в app.config в клиенте exe, а не app.config для сборки.