Я переименовал файл контракта на обслуживание в моей WCF службе, и теперь при попытке добавить или обновить ссылку на службу возникает ошибка:
Произошла ошибка при загрузке 'http://localhost:8733/Design_Time_Addresses/MessengerService/MessengerService/mex/$metadata'. Запрос не выполнен с состоянием HTTP 400: неверный запрос. Метаданные содержат ссылку, которая не может быть разрешена: 'http://localhost:8733/Design_Time_Addresses/MessengerService/MessengerService/mex'. Метаданные содержат ссылку, которая не может быть разрешена: 'http://localhost:8733/Design_Time_Addresses/MessengerService/MessengerService/mex'. Если служба определена в текущем решении, попробуйте создать решение и снова добавить ссылку на службу.
Служба развернута в WcfSvcHost . Мой App.config:
App.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> </appSettings> <system.web> <compilation debug="true" /> </system.web> <system.serviceModel> <services> <service name="MessengerService.ServiceLogic.MessengerService"> <endpoint address="" binding="wsDualHttpBinding" contract="MessengerService.Contracts.ServiceContracts.IMessengerService"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="http://localhost:8733/Design_Time_Addresses/MessengerService/MessengerService/" /> </baseAddresses> </host> </service> </services> <behaviors> <serviceBehaviors> <behavior> <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/> <serviceDebug includeExceptionDetailInFaults="False" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
Как это исправить?
Это невероятно. Итак, если я напишу этот код в контракте обратного вызова:
[OperationContract(IsOneWay = true)] void MakePulse();
Это нормально. Но если я напишу это:
[OperationContract(IsOneWay = true)] void Pulse();
Это абсолютно неправильно.