Я кодировал сторону сервера WCF с помощью netTcpBinding. Затем я закодировал клиентскую сторону. Но это показывает исключение, в то время как оправдание "var sc = new CommondServiceClient ();" во время выполнения. Что мне делать?
Ниже приведено сообщение об исключении:
System.InvalidOperationException
HResult = 0x80131509
Сообщение = Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт «ICommondService» в разделе конфигурации клиента ServiceModel. Это может быть связано с тем, что для вашего приложения не найден файл конфигурации, или из-за того, что в клиентском элементе не найден элемент конечной точки, соответствующий этому контракту.
Источник = System.ServiceModel
Трассировки стека:
......
Я что-то пробовал:
- Я могу использовать сервисы с помощью WcfTestClient.
- Ссылка на услугу добавлена Visual Studio "Добавить ссылку на услугу ...". Я думаю, что я получаю сервисные данные. Но я встречаю исключение времени выполнения, как указано выше
- Я также пытался сгенерировать код с помощью инструмента svcutil, но он все еще не работает
Вот файл конфигурации wcf:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" />
</system.web>
<!-- When deploying the service library project, the content of the config file must be added to the host's
app.config file. System.Configuration does not support config files for libraries. -->
<system.serviceModel>
<services>
<service name="ServiceContractor.CommondService">
<endpoint address="" binding="netTcpBinding" contract="ServiceContractor.ICommondService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information,
set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="False" httpsGetEnabled="False"/>
<!-- To receive exception details in faults for debugging purposes,
set the value below to true. Set to false before deployment
to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Это wcf-сервис с собственным хостом:
var baseAddress = new Uri($"net.tcp://localhost:{PORT}/Company/service");
_host = new ServiceHost(typeof(CommondService), baseAddress);
try
{
var smb = _host.Description.Behaviors.Find<ServiceMetadataBehavior>();
if (smb == null) _host.Description.Behaviors.Add(new ServiceMetadataBehavior());
_host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "mex");
_host.AddServiceEndpoint(typeof(ICommondService), new NetTcpBinding(), "");
_host.Open();
}
catch (CommunicationException ce)
{
_host.Abort();
}
Понятия не имею, что не так. Какой документ мне следует попросить? Вы можете мне помочь?