Моя служба 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.Но было бы хорошо, чтобы эти полтора дня назад.
спасибо за предложения всем.