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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top