none
Wcf no IIS funciona em Desenvolvimento mas não funciona em produção ? RRS feed

  • Pergunta

  • Israel, fiz um prototipo para o IIS mas ele funciona corretamente enquanto em desenvolvimento mas quando eu publico ele no IIS ele da este erro..

     

    Server Error in '/' Application.

    Configuration Error

    Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

    Parser Error Message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level.  This error can be caused by a virtual directory not being configured as an application in IIS.

    Source Error:

    Line 53:             ASP.NET to identify an incoming user. 
    Line 54: -->
    Line 55: <authentication mode="Windows"/>
    Line 56:
    Line 57: <!--The <customErrors> section enables configuration

    Source File: C:\Agil\AgilWeb\prototipowcfiis\web.config    Line: 55


    Version Information:  Microsoft .NET Framework Version:2.0.50727.3603; ASP.NET Version:2.0.50727.3082

     

    Voce pode me ajudar?

    quarta-feira, 24 de março de 2010 18:02

Respostas

Todas as Respostas

  • Boas Marcio,

    Em primeiro lugar, se não precisar de autenticação, mova o atributo mode para None.

    Depois, certifique no pool da aplicação no IIS se está com a versão correta do ASP.NET, que deve ser a 2.0.
    http://www.israelaece.com
    quarta-feira, 24 de março de 2010 18:08
    Moderador
  • Eu fiz isto mas ele agora da um erro:  417 Exception

     

    Mas o curioso  é que local ele funciona só da o erro quando eu public ele no nosso servidor de internet.

    quarta-feira, 24 de março de 2010 18:24
  • Boas Marcio,

    Mas quais são dos detalhes do erro?
    http://www.israelaece.com
    quarta-feira, 24 de março de 2010 18:31
    Moderador
  • Ele me retorna esta mensagem:

    O tipo de conteúdo text/html; charset=utf-8 da mensagem de resposta não corresponde ao tipo de conteúdo da ligação (application/soap+xml; charset=utf-8). Se estiver usando um codificador personalizado, verifique se o método IsContentTypeSupported está implementado corretamente. Os primeiros 1024 bytes da resposta foram: '<html>
        <head>
            <title>Configuration Error</title>
            <style>
             body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}
             p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
             b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
             H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
             H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
             pre {font-family:"Lucida Console";font-size: .9em}
             .marker {font-weight: bold; color: black;text-decoration: none;}
             .version {color: gray;}
             .error {margin-bottom: 10px;}
             .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
            </style>
        </head>

        <body bgcolor="white">

                <span><H1>Server Error in '/' Application.<hr width=100% size=1 color=silver></H1>

                <h2> <i>Configuration Error</i> </h2></sp'.

    quarta-feira, 24 de março de 2010 18:58
  • Boas,

    Você já verificou se as configurações do serviço no cliente correspondem as configurações do serviço?


    http://www.israelaece.com
    quarta-feira, 24 de março de 2010 19:03
    Moderador
  • Estas são as conf. do server:

     

        <system.serviceModel>
        <bindings>
           <wsHttpBinding>
              <binding name="NewBinding0" closeTimeout="00:01:50" openTimeout="00:01:05"
                 receiveTimeout="00:10:05" sendTimeout="00:01:05" maxBufferPoolSize="2147483647"
                 maxReceivedMessageSize="2147483647">
                 <readerQuotas maxDepth="100" maxStringContentLength="100" maxArrayLength="100"
                    maxBytesPerRead="100" maxNameTableCharCount="100" />
                 <reliableSession inactivityTimeout="00:10:05" />
                 <security>
                    <transport>
                       <extendedProtectionPolicy policyEnforcement="Never" />
                    </transport>
                 </security>
              </binding>
           </wsHttpBinding>
        </bindings>
        <services>
           <service behaviorConfiguration="PrototipoWcfIIS.Service1Behavior"
              name="PrototipoWcfIIS.ServicoGestao">
              <endpoint address="" binding="wsHttpBinding" contract="PrototipoWcfIIS.IMunicipio">
                 <identity>
                    <dns value="localhost" />
                 </identity>
              </endpoint>
              <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
           </service>
        </services>
           
        <behaviors>
                <serviceBehaviors>
                    <behavior name="PrototipoWcfIIS.Service1Behavior">   
                        <serviceMetadata httpGetEnabled="true"/>
                        <serviceDebug includeExceptionDetailInFaults="true"/>
                    </behavior>
                </serviceBehaviors>
            </behaviors>
       
      </system.serviceModel>

     

    e esta é ad client

     

        <system.serviceModel>
            <bindings>
                <wsHttpBinding>
                    <binding name="WSHttpBinding_IMunicipio" closeTimeout="00:01:00"
                        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                        bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                        maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
                        messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="false"
                        allowCookies="false">
                        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                        <reliableSession ordered="true" inactivityTimeout="00:10:00"
                            enabled="false" />
                        <security mode="None">
                            <transport clientCredentialType="Windows" proxyCredentialType="None"
                                realm="">
                                <extendedProtectionPolicy policyEnforcement="Never" />
                            </transport>
                            <message clientCredentialType="Windows" negotiateServiceCredential="true"
                                algorithmSuite="Default" establishSecurityContext="true" />
                        </security>
                    </binding>
                </wsHttpBinding>
            </bindings>

          <client>
            <endpoint address="http://www.agil.agili.com.br/PrototipoWcfIIS/ServicoGestao.svc"
              binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IMunicipio"
              contract="Servico.IMunicipio" name="WSHttpBinding_IMunicipio">
              <identity>
                <dns value="localhost" />
              </identity>
            </endpoint>
          </client>
        </system.serviceModel>

    quarta-feira, 24 de março de 2010 19:30
  • Boas Marcio,

    Tente remover isso dos dois:

    <identity>
      <dns value="localhost" />
    </identity>

    Ou você pode colocar no value o IP do seu servidor.


    http://www.israelaece.com

    quarta-feira, 24 de março de 2010 19:42
    Moderador
  • Fiz isso e continua dando o mesmo erro.

    O curioso é que se eu colocar a aplicação no IIS da minha máquina (local) ele funciona direitinho. Porem quando eu publico no servidor quente onde ja esta rodando outras aplicações, ele gera este erro.

    quarta-feira, 24 de março de 2010 19:50
  • Boas Marcio,

    Acho que o problema está na configuração do serviço, onde não está "ligando" a configuração do binding. Tente isso:

      <system.serviceModel>
        <bindings>
           <wsHttpBinding>
              <binding name="NewBinding0" closeTimeout="00:01:50" openTimeout="00:01:05"
                 receiveTimeout="00:10:05" sendTimeout="00:01:05" maxBufferPoolSize="2147483647"
                 maxReceivedMessageSize="2147483647">
                 <readerQuotas maxDepth="100" maxStringContentLength="100" maxArrayLength="100"
                    maxBytesPerRead="100" maxNameTableCharCount="100" />
                 <reliableSession inactivityTimeout="00:10:05" />
                 <security>
                    <transport>
                       <extendedProtectionPolicy policyEnforcement="Never" />
                    </transport>
                 </security>
              </binding>
           </wsHttpBinding>
        </bindings>
        <services>
           <service behaviorConfiguration="PrototipoWcfIIS.Service1Behavior"
              name="PrototipoWcfIIS.ServicoGestao">
              <endpoint address="" binding="wsHttpBinding" contract="PrototipoWcfIIS.IMunicipio" bindingConfiguration="NewBinding0">
                 <identity>
                    <dns value="localhost" />
                 </identity>
              </endpoint>
              <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
           </service>
        </services>
           
        <behaviors>
                <serviceBehaviors>
                    <behavior name="PrototipoWcfIIS.Service1Behavior">   
                        <serviceMetadata httpGetEnabled="true"/>
                        <serviceDebug includeExceptionDetailInFaults="true"/>
                    </behavior>
                </serviceBehaviors>
            </behaviors>
      </system.serviceModel>


    http://www.israelaece.com
    quarta-feira, 24 de março de 2010 19:56
    Moderador
  • Alterei o config agora olha o erro....

     

    {"O servidor remoto retornou uma resposta inesperada: (400) Bad Request."}

         {"O servidor remoto retornou um erro: (400) Solicitação Incorreta."}

    quarta-feira, 24 de março de 2010 20:22
  • Boas,

    Não consigo ver as imagens. Tente atualizar a referência do serviço na aplicação cliente.


    http://www.israelaece.com
    quarta-feira, 24 de março de 2010 20:23
    Moderador
  • Ja fiz isto mas não adiantou.
    quarta-feira, 24 de março de 2010 20:27
  • Boas Marcio,

    Defina no serviço: <security mode="None"> na configuração do binding.

    Por acaso, está utilizando Silverlight?
    http://www.israelaece.com
    quarta-feira, 24 de março de 2010 22:53
    Moderador
  • Bom dia Israel

     

    Fiz a alteração que voce sugeriu e pelo browse eu consigo ver a wsdl porem quando faço a requisição a um método via aplicação cliente, ele continua dando esta mensagem:

         "O servidor remoto retornou uma resposta inesperada: (417) Expectation failed."

    quinta-feira, 25 de março de 2010 11:47
  • Boas Marcio,

    Está utilizando Silverlight?


    http://www.israelaece.com
    quinta-feira, 25 de março de 2010 11:54
    Moderador
  • Boas Marcio,

    Está utilizando Silverlight?


    http://www.israelaece.com
    quinta-feira, 25 de março de 2010 11:54
    Moderador
  • Não, o meu cliente é WinForm
    quinta-feira, 25 de março de 2010 11:55
  • Boas Marcio,

    Qual a mensagem de erro que está tendo agora? Como está a configuração atual das partes (cliente e serviço)?

    Tente definir a propriedade IncludeExceptionDetailInFaults para true, para que os erros sejam propagados para o cliente. Assim você conseguirá enxergar a mensagem da exceção que está sendo disparada.


    http://www.israelaece.com
    quinta-feira, 25 de março de 2010 11:57
    Moderador
  • Então, eu ja defini IncludeExceptionDetailInFaults para true veja:

    <behaviors>
                <serviceBehaviors>
                    <behavior name="PrototipoWcfIIS.Service1Behavior">    
                        <serviceMetadata httpGetEnabled="true"/>
                        <serviceDebug includeExceptionDetailInFaults="true"/>
                    </behavior>
                </serviceBehaviors>
            </behaviors>

     

    e a mensagem que ele retorna e esta mesmo:

       "O servidor remoto retornou uma resposta inesperada: (417) Expectation failed."

    quinta-feira, 25 de março de 2010 12:03
  • Boas Marcio,

    Veja se definindo o código abaixo antes de invocar o serviço resolve em algo:

    System.Net.ServicePointManager.Expect100Continue = false;


    http://www.israelaece.com
    • Marcado como Resposta marcio.chiaveli quinta-feira, 25 de março de 2010 13:12
    quinta-feira, 25 de março de 2010 12:11
    Moderador
  • Opa, parece que deu certo Israel, vou fazer mais uns testes aqui depois posto o resulktado Ok.
    quinta-feira, 25 de março de 2010 12:14
  • Ok Israel resolveu o problema.

    Aproveitando o post, como eu faço para debugar o servidor no IIS?

    quinta-feira, 25 de março de 2010 13:13