#wcf #configuration-files #wcf-binding #wcf-endpoint
#wcf #конфигурация-файлы #wcf-привязка #wcf-конечная точка
Вопрос:
Я создаю службу WCF. Это мой первый фильм. Я получаю сообщение об ошибке:
Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт ‘WCFClient.IWCFClient» в разделе конфигурации клиента ServiceModel.
Я попытался переключить имена конечных точек и тому подобное, а также удалить / воссоздать ссылку на службу. Кажется, я не могу понять, в чем проблема.
Конфигурация приложения:
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IWCFClient" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:4295/Services/WCFClient.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IWCFClient"
contract="WCFClient.IWCFClient" name="BasicHttpBinding_IWCFClient" />
</client>
Конфигурация службы:
<services>
<service behaviorConfiguration="WCFGraphicManagementTool.Services.WCFClientBehavior"
name="WCFGraphicManagementTool.Services.WCFClient">
<endpoint address="" name="BasicHttpBinding_IWCFClient" binding="basicHttpBinding" contract="WCFGraphicManagementTool.Contracts.IWCFClient">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WCFGraphicManagementTool.Services.WCFClientBehavior">
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
<serviceThrottling maxConcurrentCalls="120" maxConcurrentSessions="120" maxConcurrentInstances="120" />
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>
Комментарии:
1. Как вы создаете клиентский прокси-сервер?
2. WCFClient. WCFClientClient, WCFClient = новый WCFClient. WCFClientClient(); Это строка, в которой выдается ошибка.
3. Это единственная конечная точка, определенная в конфигурации клиента? Что произойдет, если вы вызовете:
var client = new WCFClient.WCFClientClient("BasicHttpBinding_IWCFClient");
4. Это единственная конечная точка в моей конфигурации. Я попробовал приведенную выше строку, и она вернулась с той же ошибкой в основном: не удалось найти элемент конечной точки с именем ‘BasicHttpBinding_IWCFClient’ и контрактом ‘WCFClient. IWCFClient’ в разделе конфигурации клиента ServiceModel
5. Вы уверены, что конфигурация клиента указана в конфигурации исполняемого файла?
Ответ №1:
Я только что понял это. Мне также нужно было добавить ее в web.config проекта. Это было в службе, но не в проекте.
Ответ №2:
Обычно это происходит из-за несоответствия между именем службы / пространством имен, указанным в файле конфигурации, и именем контракта в исходном коде или разметке файла службы. Обычно это происходит после создания новой службы с помощью Visual Studio, а затем переименования службы / пространства имен.
Щелкните правой кнопкой мыши на файле .svc в обозревателе решений и выберите «Просмотреть разметку»
Проверьте, правильно ли указано значение атрибута ‘Service’. Проверьте, совпадают ли пространство имен и имя с теми, которые вы назначили.
Должно быть что-то вроде этого:
<%@ ServiceHost Language="C#" Debug="true" Service="WCFGraphicManagementTool.Services.WCFClient" CodeBehind="WCFClient.svc.cs" %>