2013-03-07 4 views
0

я получаю эту ошибку при попытке получить доступ к службе WCF, размещенных в IIS (локально) от сети переменного тока # клиента:Не удается подключиться к службе WCF от клиента

Не удалось найти конечную точку элемента с именем «X» и контракт «Контракт « Имя »в разделе конфигурации клиента ServiceModel. Это может быть , поскольку файл конфигурации не найден для вашего приложения или , потому что ни один элемент конечной точки, соответствующий этому имени, не найден в клиентском элементе .

Это app.config клиента (это приспособление NUnit только для проверки соединения):

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
     <bindings> 
      <basicHttpBinding> 
       <binding name="BasicHttpBinding_MyWs" closeTimeout="00:01:00" 
        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
        hostNameComparisonMode="StrongWildcard" 
        maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
        messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"> 
        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
         maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
        <security mode="Transport"> 
         <transport clientCredentialType="None" proxyCredentialType="None" 
          realm="" /> 
         <message clientCredentialType="UserName" algorithmSuite="Default" /> 
        </security> 
       </binding> 
      </basicHttpBinding> 
     </bindings> 
     <client> 
      <endpoint address="https://localhost/MyWs/MyWs.svc" 
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_MyWs" 
        contract="MyServiceSvc.IMyWs" 
        name="BasicHttpBinding_MyWs" /> 
     </client> 
    </system.serviceModel> 
</configuration> 

Если я просматриваю

https://localhost/MyWs/MyWs.svc?wsdl 

я правильный вывод так серверной части работает нормально.
Кроме того, я могу проверить свои ws с помощью soapUI, поэтому проблема должна быть в клиенте, возможно, в app.config.

Мой код клиента, только в случае, если кто-то хочет tolook на него:

[TestFixture] 
    public class MyWsProxyFixture 
    { 
     private readonly MyWsClient _client = new MyWsClient(); 

     [Test] 
     public void ProxyCreation() 
     { 
      Assert.IsNotNull(_client); 
     } 

     //More tests here 
} 

Даже смешнее, точно такой же конфигурации и клиент работает в другой машине. Да, это правда. Я не могу в это поверить, но так оно и есть.

Можете ли вы дать некоторые подсказки или предложения, чтобы это исправить?
Спасибо!

PS: ссылка на обслуживание у клиента в порядке.

+0

pls обеспечивают структуру решения ur, чтобы я мог соответствующим образом обновить свой ответ. –

+0

Мое решение: 1 сервис wcf, который использует другие различные компоненты (проекты библиотеки классов) и проект библиотеки классов для клиента – andreapier

+0

Можете ли вы опубликовать свой код клиента?Также вы используете ссылку «Добавить службу» службы WCF или вы создали прокси из WSDL и включили ее в проект клиента? Также в конфигурации клиента я вижу, что значение контракта имеет пространство имен и надеется, что интерфейс находится в том же пространстве имен в проекте клиента, а также – Rajesh

ответ

0

Вышло, что проблема не в App.config вообще.
Фактически, тот же самый App.config работал прямо на другой машине.
Проблема была с Nunit. По умолчанию используется параметр «Теневая копия», который копирует все DLL-файлы во временную папку и выполняет там двоичный код. Я не могу понять, почему он копирует dll, но не .config. Это просто не имеет смысла!
После того, как я установил теневую копию в false, она начала работать и на моей машине.

PS: Клиент работает на другой машине, потому что среда работает под Resharper, которая по умолчанию отключает теневую копию.
Теперь это имеет смысл!

Надеюсь, что это поможет кому-то с той же глупой проблемой

1

Насколько я вижу, это может быть проблема с конфигурацией нескольких проектов:

Если у вас несколько проектов в вашем решении, тогда вы должны поместить этот файл конфигурации в конфигурацию конкретного проекта, который использует службу wcf.

Предположим, у вас есть 2 проекта, тогда будет 2 соответствующих файла конфигурации.

+0

Файл app.config находится в том же проекте. Вы имеете в виду файл web.config? Однако у меня только 1 клиентский проект – andreapier

+0

У вас проверено, что все контракты установлены правильно? –

+0

Да, как говорится в этом вопросе, ссылки в порядке. Сама же конфигурация работает в другой машине – andreapier

Смежные вопросы