WCF - Сервисная ссылка не будет создана - PullRequest
0 голосов
/ 14 апреля 2011

Моя служба WCF работала правильно, а затем вдруг перестала работать.Я не думаю, что я что-то изменил с конфигурацией.

Служба WCF размещается службой Windows.

Что странно, когда я добавляю ссылку на сервис, он идентифицирует контракт и все доступные методы.Но если я иду в браузер, я получаю ошибку 404, и компилятор не создает службу.Я удалил и попытался повторно добавить ссылку безуспешно

Кроме того, мое развернутое приложение все еще может получить доступ к службе wcf.

Вопрос 1. В службе Windows WCF я могу видеть wsdl в браузере (http://localhost:8080/MaestroService/mex). В IE я получаю 400 неверных запросов. Я предполагаю, что это кореньпроблема.

Вопрос 2. Есть ли что-то еще?

App.config

<system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="NewBinding0" />
  </basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
  <behavior name="metadataAndDebug">
    <serviceMetadata httpGetEnabled="true" />
    <serviceDebug httpHelpPageEnabled="true" includeExceptionDetailInFaults="true" />
  </behavior>
</serviceBehaviors>
</behaviors>
<services>
  <service behaviorConfiguration="metadataAndDebug" name="MaestroServiceLibrary.MaestroService">
    <endpoint address="basic" binding="basicHttpBinding" bindingConfiguration="NewBinding0"
      name="basicHttp" contract="MaestroServiceLibrary.IMaestroService" />
    <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
      contract="IMetadataExchange" />
    <endpoint address="net.tcp://localhost:8888/MaestroService" binding="netTcpBinding"
      bindingConfiguration="" name="netTcpBinding" contract="MaestroServiceLibrary.IMaestroService" />
    <endpoint address="net.pipe://localhost/MaestroService" binding="netNamedPipeBinding"
      bindingConfiguration="" name="netNamedPipeBinding" contract="MaestroServiceLibrary.IMaestroService" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8080/MaestroService" />
      </baseAddresses>
    </host>
  </service>
</services>

ОшибкиКомпиляция:

Custom tool error: Failed to generate code for the service reference 'MaestroService'.  Please check other error and warning messages for details.

Custom tool warning: Cannot import wsdl:binding


Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.

XPath к wsdl: portType: // wsdl: определения [@targetNamespace = 'http://tempuri.org/']/wsdl:portType[@name='IMaestroService'] Источник XPath к ошибке: // wsdl: определения [@targetNamespace =' http://tempuri.org/']/wsdl:binding[@name='basicHttp']

Обновление

Я включил трассировку и увидел следующее: сообщение с To 'http://localhost:8080/MaestroService/mex/mex' не может быть обработано в получателе из-за несовпадения AddressFilter в EndpointDispatcherУбедитесь, что отправитель и конечный адрес получателя совпадают. Я обновлю этот вопрос, если выясню.

Обновление V2

Я перешел в другой проект в том же решенииЯ смог добавить службу там без проблем. Я заметил, что я использовал 3,5 в консольЛе приложение против 4.0 в приложении браузера wpf.Когда я вернулся, чтобы сообщить об этом, я заметил в своем последнем обновлении, что в нем есть / mex / mex, хотя я добавил в URL http://localhost:8080/MaestroService/mex.Я попробовал просто http://localhost:8080/MaestroService, и это сработало !!!

В конце концов я все-таки использовал технику Migual Castro здесь , где вы создаете контракты и прокси.Который был рад видеть, как это действительно работает и что делает VS.Но было бы хорошо, чтобы эти полтора дня назад.

спасибо за предложения всем.

1 Ответ

0 голосов
/ 14 апреля 2011

Вы работаете в качестве службы Windows.

Служба Windows работает в контексте безопасности учетной записи пользователя.

Если пароль учетной записи пользователя изменяется или истекает, служба не запускается.

Первое, что вы должны проверить: запущена ли служба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...