none
WCF + Entity + IIS RRS feed

  • Pergunta

  • Seguinte pessoal. Eu tenho um serviço WCF que manipula informações no banco de dados (inseri, altera, remove e retorna informações) pelo Entity Framework. Esse serviço está hospedado no IIS 7 na minha máquina local. No App.Config da aplicação que usa o serviço WCF está atribuído como endereço do endpoint o endereço que o IIS forneceu na hospedagem.

    Eu tento executar a aplicação que está consumindo o serviço WCF e ele dá o seguinte erro: "Erro ao executar a definição do comando. Consulte a exceção interna para obter detalhes". Mas quando eu mudo o endereço que está no endpoint e coloco o endereço que o Visual Studio dá quando executa o serviço, a aplicação funciona perfeitamente.

    Segue os dois endpoints:

    O que não funciona:

    <system.serviceModel>
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <bindings>
          <basicHttpBinding>
            <binding name="BasicHttpBinding_IDados" />
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint address="http://mauro-pc/Entity/Dados.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDados" contract="Referencia.IDados" name="BasicHttpBinding_IDados" />
        </client>
        <protocolMapping>
          <add binding="basicHttpsBinding" scheme="https" />
        </protocolMapping>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
      </system.serviceModel>

    E o que funciona:

    <system.serviceModel>
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <bindings>
          <basicHttpBinding>
            <binding name="BasicHttpBinding_IDados" />
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint address="http://localhost:20774/Dados.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDados" contract="Referencia.IDados" name="BasicHttpBinding_IDados" />
        </client>
        <protocolMapping>
          <add binding="basicHttpsBinding" scheme="https" />
        </protocolMapping>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
      </system.serviceModel>

    Esse endereço (http://localhost:20774/Dados.svc) funciona porque o WCF e a aplicação está na mesma solução.

    E o problema está em alguma referencia no Entity junto ao serviço e o IIS não consegue acessar. Porque eu mudei o serviço e atribui informações na mão e a aplicação conseguiu consumir o serviço WCF sem problemas.

    Alguém teria alguma solução?

    Agradeço desde já!

    segunda-feira, 30 de dezembro de 2013 15:45

Todas as Respostas

  • Tem algo de errado nesse Endereço!

    não deve ta respondendo pelo IIS: 

    http://mauro-pc/Entity/Dados.svc

    Você ta rodando localmente no seu IIS e ai não funciona com esse endereço correto?

    Só ta rodando no Visual Studio pelo Servidor Web Embutido ?

    Faz um teste crie um projeto novo e tente consumir esse endereço 

    http://mauro-pc/Entity/Dados.svc
    Para mim o mais importante não é te falar faça isso ou aquilo, o mais importante e que você percebe certas conceitos para que ai aprenda e não passe por isso mais ... eu to suspeitando que tal endereço seu IIS local não ta respondendo por ele!


    Fulvio Cezar Canducci Dias


    segunda-feira, 30 de dezembro de 2013 20:23
  • Seguinte pessoal. Eu tenho um serviço WCF que manipula informações no banco de dados (inseri, altera, remove e retorna informações) pelo Entity Framework. Esse serviço está hospedado no IIS 7 na minha máquina local. No App.Config da aplicação que usa o serviço WCF está atribuído como endereço do endpoint o endereço que o IIS forneceu na hospedagem.

    Eu tento executar a aplicação que está consumindo o serviço WCF e ele dá o seguinte erro: "Erro ao executar a definição do comando. Consulte a exceção interna para obter detalhes". Mas quando eu mudo o endereço que está no endpoint e coloco o endereço que o Visual Studio dá quando executa o serviço, a aplicação funciona perfeitamente.

    Segue os dois endpoints:

    O que não funciona:

    <system.serviceModel>
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <bindings>
          <basicHttpBinding>
            <binding name="BasicHttpBinding_IDados" />
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint address="http://mauro-pc/Entity/Dados.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDados" contract="Referencia.IDados" name="BasicHttpBinding_IDados" />
        </client>
        <protocolMapping>
          <add binding="basicHttpsBinding" scheme="https" />
        </protocolMapping>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
      </system.serviceModel>

    E o que funciona:

    <system.serviceModel>
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <bindings>
          <basicHttpBinding>
            <binding name="BasicHttpBinding_IDados" />
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint address="http://localhost:20774/Dados.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDados" contract="Referencia.IDados" name="BasicHttpBinding_IDados" />
        </client>
        <protocolMapping>
          <add binding="basicHttpsBinding" scheme="https" />
        </protocolMapping>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
      </system.serviceModel>

    Esse endereço (http://localhost:20774/Dados.svc) funciona porque o WCF e a aplicação está na mesma solução.

    E o problema está em alguma referencia no Entity junto ao serviço e o IIS não consegue acessar. Porque eu mudei o serviço e atribui informações na mão e a aplicação conseguiu consumir o serviço WCF sem problemas.

    Alguém teria alguma solução?

    Agradeço desde já!

    Cara se você abrir o navegador e digitar o caminho abaixo do serviço abre alguma tela ???

    Qual erro que dá ???

    http://mauro-pc/Entity/Dados.svc

    Faça um outro teste tente dar um ping na máquina mauro-pc pra ver se realmente está ligada e respondendo


    Leonardo Lourenço Silva


    segunda-feira, 30 de dezembro de 2013 21:16
  • Engraçado como eu falo e a pessoa copia e responde a mesma coisa!

    Fulvio Cezar Canducci Dias

    segunda-feira, 30 de dezembro de 2013 21:23
  • Engraçado como eu falo e a pessoa copia e responde a mesma coisa!

    Fulvio Cezar Canducci Dias

    Me fala aonde a minha resposta está igual a sua ????

    Pra testar um serviço não precisa nem criar um projeto, apenas abrir o navegador e informar o caminho do serviço, você pediu pra criar um projeto, você foi mais longe rodou mais...


    Leonardo Lourenço Silva


    segunda-feira, 30 de dezembro de 2013 21:28
  • Engraçado como eu falo e a pessoa copia e responde a mesma coisa!


    Fulvio Cezar Canducci Dias

    Me fala aonde a minha resposta está igual a sua ????

    Pra testar um serviço não precisa nem criar um projeto, apenas abrir o navegador e informar o caminho do serviço, você pediu pra criar um projeto, você foi mais longe rodou mais...


    Leonardo Lourenço Silva


    Leonardo se ta agindo como diferente daquilo que eu imaginava!

    Desculpas não falarei mais nada!!!

    Obrigado fique com Deus


    Fulvio Cezar Canducci Dias

    segunda-feira, 30 de dezembro de 2013 21:43
  • Engraçado como eu falo e a pessoa copia e responde a mesma coisa!


    Fulvio Cezar Canducci Dias

    Me fala aonde a minha resposta está igual a sua ????

    Pra testar um serviço não precisa nem criar um projeto, apenas abrir o navegador e informar o caminho do serviço, você pediu pra criar um projeto, você foi mais longe rodou mais...


    Leonardo Lourenço Silva


    Leonardo se ta agindo como diferente daquilo que eu imaginava!

    Desculpas não falarei mais nada!!!

    Obrigado fique com Deus


    Fulvio Cezar Canducci Dias

    Nóis, sei lá mano mas são Threads quanto mais respostas dermos, quanto mais bombardearmos de opções, possíveis alternativas, soluções, com certeza melhor !!!

    Até pra irmos trocando idéias e vendo os pontos de vista diferentes em cima das soluções propostas !!!


    Leonardo Lourenço Silva


    segunda-feira, 30 de dezembro de 2013 21:47
  • O link está correto. Já abri pelo navegador e ele abre normalmente.

    Também já tentei criar outra aplicação e consumir esse mesmo endereço, o erro continua.

    Sim, estou rodando o IIS local e não funciona o link.

    Sim, rodei pelo servidor do Visual Studio e peguei o link que ele fornece, e a aplicação rodou normalmente.

    terça-feira, 31 de dezembro de 2013 01:04
  • Quando eu abro pelo navegador não dá erro nenhum. O serviço está hospedado corretamente. 

    terça-feira, 31 de dezembro de 2013 01:05
  • Tem algo de errado nesse Endereço!

    não deve ta respondendo pelo IIS: 

    http://mauro-pc/Entity/Dados.svc

    Você ta rodando localmente no seu IIS e ai não funciona com esse endereço correto?

    Só ta rodando no Visual Studio pelo Servidor Web Embutido ?

    Faz um teste crie um projeto novo e tente consumir esse endereço 

    http://mauro-pc/Entity/Dados.svc
    Para mim o mais importante não é te falar faça isso ou aquilo, o mais importante e que você percebe certas conceitos para que ai aprenda e não passe por isso mais ... eu to suspeitando que tal endereço seu IIS local não ta respondendo por ele!


    Fulvio Cezar Canducci Dias


    Ainda estou na mesma. Já alterei tudo que já pra se alterado e ainda assim o erro continua. É o maldito Entity que não está sendo lido pelo IIS porque o serviço está sendo consumido corretamente.
    terça-feira, 31 de dezembro de 2013 12:05
  • Tem algo de errado nesse Endereço!

    não deve ta respondendo pelo IIS: 

    http://mauro-pc/Entity/Dados.svc

    Você ta rodando localmente no seu IIS e ai não funciona com esse endereço correto?

    Só ta rodando no Visual Studio pelo Servidor Web Embutido ?

    Faz um teste crie um projeto novo e tente consumir esse endereço 

    http://mauro-pc/Entity/Dados.svc
    Para mim o mais importante não é te falar faça isso ou aquilo, o mais importante e que você percebe certas conceitos para que ai aprenda e não passe por isso mais ... eu to suspeitando que tal endereço seu IIS local não ta respondendo por ele!


    Fulvio Cezar Canducci Dias


    Ainda estou na mesma. Já alterei tudo que já pra se alterado e ainda assim o erro continua. É o maldito Entity que não está sendo lido pelo IIS porque o serviço está sendo consumido corretamente.
    qual é o seu facebook?

    Fulvio Cezar Canducci Dias

    terça-feira, 31 de dezembro de 2013 12:08
  • Tem algo de errado nesse Endereço!

    não deve ta respondendo pelo IIS: 

    http://mauro-pc/Entity/Dados.svc

    Você ta rodando localmente no seu IIS e ai não funciona com esse endereço correto?

    Só ta rodando no Visual Studio pelo Servidor Web Embutido ?

    Faz um teste crie um projeto novo e tente consumir esse endereço 

    http://mauro-pc/Entity/Dados.svc
    Para mim o mais importante não é te falar faça isso ou aquilo, o mais importante e que você percebe certas conceitos para que ai aprenda e não passe por isso mais ... eu to suspeitando que tal endereço seu IIS local não ta respondendo por ele!


    Fulvio Cezar Canducci Dias


    Ainda estou na mesma. Já alterei tudo que já pra se alterado e ainda assim o erro continua. É o maldito Entity que não está sendo lido pelo IIS porque o serviço está sendo consumido corretamente.

    qual é o seu facebook?

    Fulvio Cezar Canducci Dias

    http://www.facebook.com/edmaarcosta
    terça-feira, 31 de dezembro de 2013 12:36
  • Tem algo de errado nesse Endereço!

    não deve ta respondendo pelo IIS: 

    http://mauro-pc/Entity/Dados.svc

    Você ta rodando localmente no seu IIS e ai não funciona com esse endereço correto?

    Só ta rodando no Visual Studio pelo Servidor Web Embutido ?

    Faz um teste crie um projeto novo e tente consumir esse endereço 

    http://mauro-pc/Entity/Dados.svc
    Para mim o mais importante não é te falar faça isso ou aquilo, o mais importante e que você percebe certas conceitos para que ai aprenda e não passe por isso mais ... eu to suspeitando que tal endereço seu IIS local não ta respondendo por ele!


    Fulvio Cezar Canducci Dias


    Ainda estou na mesma. Já alterei tudo que já pra se alterado e ainda assim o erro continua. É o maldito Entity que não está sendo lido pelo IIS porque o serviço está sendo consumido corretamente.

    qual é o seu facebook?

    Fulvio Cezar Canducci Dias

    http://www.facebook.com/edmaarcosta
    me aceite!

    Fulvio Cezar Canducci Dias

    terça-feira, 31 de dezembro de 2013 14:12
  • Aceito.

    Alguma ajuda pessoal? Estou realmente estou sem saber o que fazer e que caralho está acontecendo. 

    Já dei ping no endereço e está respondendo. Sempre abro o link pelo browser e o serviço é mostrado normalmente. Já criei outra aplicação cliente para consumir o serviço e o erro é o mesmo. Já recriei o serviço e hospedei no IIS de novo e o erro continua. Já tentei re-hospedar o antigo serviço no IIS e nada mudou. 

    Estou realmente sem saída.

    Já criei outro serviço, que não usava Entity Framework, e hospedei no IIS. A merda do serviço foi consumido perfeitamente pela aplicação cliente. Nos dois serviços (no com entity e sem o entity) eu usei os mesmos métodos para consumir e hospedar o serviço.

    Portanto, é cagada do Entity com o IIS, não tem outra explicação.

    quinta-feira, 2 de janeiro de 2014 00:42
  • Aceito.

    Alguma ajuda pessoal? Estou realmente estou sem saber o que fazer e que caralho está acontecendo. 

    Já dei ping no endereço e está respondendo. Sempre abro o link pelo browser e o serviço é mostrado normalmente. Já criei outra aplicação cliente para consumir o serviço e o erro é o mesmo. Já recriei o serviço e hospedei no IIS de novo e o erro continua. Já tentei re-hospedar o antigo serviço no IIS e nada mudou. 

    Estou realmente sem saída.

    Já criei outro serviço, que não usava Entity Framework, e hospedei no IIS. A merda do serviço foi consumido perfeitamente pela aplicação cliente. Nos dois serviços (no com entity e sem o entity) eu usei os mesmos métodos para consumir e hospedar o serviço.

    Portanto, é cagada do Entity com o IIS, não tem outra explicação.

    Do jeito que você fala é culpa do Entity ... desculpa não é!!! é falta de configuração ...! alguma coisa faltando, algum detalhe é isso... !!! entendeu! 

    Se entrar no face a gente bate um papo! é só me chamar!


    Fulvio Cezar Canducci Dias

    quinta-feira, 2 de janeiro de 2014 11:20
  • Resolvido agora.

    Meu modelo do Entity estava incorreto. No "Code Generation Strategy" eu setava como Default e excluía os arquivos com extensão .tt e isso fazia com que o modelo não fosse encontrado.

    Muito obrigado pela ajuda.

    quinta-feira, 2 de janeiro de 2014 12:39