WCF Плохой запрос. Метаданные содержат ссылку, которая не может быть разрешена - PullRequest
0 голосов
/ 02 мая 2018

Я переименовал файл контракта на обслуживание в моей 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:

<?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>

Как это исправить?

1 Ответ

0 голосов
/ 02 мая 2018

Это невероятно. Итак, если я напишу этот код в контракте обратного вызова:

[OperationContract(IsOneWay = true)]
void MakePulse();

Это нормально. Но если я напишу это:

[OperationContract(IsOneWay = true)]
void Pulse();

Это абсолютно неправильно.

...