Configuração mínima nua para RESTful WCF
-
02-07-2019 - |
Pergunta
O que é o mínimo que eu preciso para colocar em web.config para obter WCF trabalhando com resto? Tenho anotado meus métodos com [WebGet], mas eles não estão recebendo a mensagem.
Solução
Eu descobri que você pode adicionar o seguinte para a directiva ServiceHost no arquivo * .svc, e ele será automaticamente WebHttpBinding configuração e WebHttpBehavior para você:
Factory="System.ServiceModel.Activation.WebServiceHostFactory"
Note que o namespace é um pouco diferente do que é mencionado em outros lugares na web (como em este artigo MSDN ).
Depois de fazer isso, eu era capaz de eliminar toda a seção de web.config e tudo ainda funcionou!
Outras dicas
Certifique-se de usar um webHttpBinding em seu endpoint (e não um httpBinding ou wsHttpBinding). Aqui está a minha endpoint configuração ...
<endpoint address="" binding="webHttpBinding" bindingConfiguration=""
contract="WcfCore.ICustomer">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
Você precisa se certificar de que você tem um endereço para o seu serviço de acolhimento por exemplo
<services>
<service name="SomeLib.SomeService">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/somebase"/>
</baseAddresses>
</host>
<!-- And one EndPoint **basicHttpBinding** WILL WORK !!! -->
<endpoint
address="basic"
binding="basicHttpBinding"
contract="SomeLib.SomeContract"/>
</service>
</services>
Agora, se você estiver auto hospedagem através de um aplicativo de console para por exemplo ... você pode invocar o seu anfitrião via:
WebChannelFactory<IServiceContract> factory =
new WebChannelFactory<IServiceContract>(
new Uri("http://localhost:8080/somebase"));
Quando o aplicativo de console é iniciado, o endereço será navegável mesmo que a sua auto-hospedado e você deve ser capaz de invocar as suas ações com base em suas WebGet modelos uri.
Esta configuração mínima vai deixar você chamar WCF restfully via auto-hospedagem. Se você está hospedando no IIS seria essencialmente funcionam da mesma maneira, exceto o arquivo svc substitui nosso anfitrião personalizado.