none
Error Handler JSON RRS feed

  • Pergunta

  • Pessoal,

     

    To com um problema em implementar essa solução sugerida pelo Israel para tratamento de exceção com json e jquery

    http://www.israelaece.com/post/Tratando-erros-com-jQuery-e-WCF.aspx

     

    O ____ responseText só volta em HTML.

     

    Alguma pista?

     


    MCP, MCTS 2.0 Web Applications, MCTS 3.5 ASP.NET
    segunda-feira, 27 de setembro de 2010 13:46

Respostas

  • Boas Eduardo,

    O problema é porque você não está colocando o fullname para o serviço e para a interface, e no WCF 4.0 como temos endpoints automáticos, ele acaba sendo um endpoint sem qualquer behavior configurado, e com isso o tratador do JSON não é disparado.

    <system.serviceModel>
      <services>
        <service name="WebApplication2.Service1" behaviorConfiguration="config">
          <endpoint
        binding="webHttpBinding"
        contract="WebApplication2.IService1"
        behaviorConfiguration="edpConfig" />
        </service>
      </services>
      <behaviors>
        <serviceBehaviors>
          <behavior name="config">
            <serviceDebug includeExceptionDetailInFaults="false" />
          </behavior>
        </serviceBehaviors>
        <endpointBehaviors>
          <behavior name="edpConfig">
            <jsonErrorHandler />
          </behavior>
        </endpointBehaviors>
      </behaviors>
      <extensions>
        <behaviorExtensions>
          <add
        name="jsonErrorHandler"
        type="WebApplication2.JsonErrorElement, WebApplication2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
        </behaviorExtensions>
      </extensions>
    </system.serviceModel>
    http://www.israelaece.com
    • Marcado como Resposta Eduardo Costa segunda-feira, 27 de setembro de 2010 17:48
    segunda-feira, 27 de setembro de 2010 17:30
    Moderador

Todas as Respostas

  • Boas Eduardo,

    Coloca aqui toda a implementação/configuração.
    http://www.israelaece.com
    segunda-feira, 27 de setembro de 2010 14:26
    Moderador
  • Segue

        <system.serviceModel>
            <services>
                <service name="HMV.Manager.Site2.upload.uploadService" behaviorConfiguration="">
                    <endpoint address="" binding="webHttpBinding" behaviorConfiguration="FetchItens" contract="HMV.Manager.Site2.upload.IuploadService">
                    </endpoint>
                </service>
            </services>

            <behaviors>
                <serviceBehaviors>
                    <behavior name="">
                        <serviceMetadata httpGetEnabled="true" />
                        <serviceDebug includeExceptionDetailInFaults="true" />
                    </behavior>
                </serviceBehaviors>
                <endpointBehaviors>
                    <behavior name="FetchItens">
                        <jsonErrorHandler />
                        <webHttp />
                    </behavior>
                </endpointBehaviors>
            </behaviors>
            <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
            <extensions>
                <behaviorExtensions>
                    <add
                      name="jsonErrorHandler"
                      type="HMV.Core.Framework.Exception.JsonErrorWebHttpBehaviorElement, HMV.Core.Framework" />
                </behaviorExtensions>
            </extensions>
        </system.serviceModel>

     

        [ServiceContract]
        public interface IuploadService
        {
            [OperationContract]
            [WebGet(UriTemplate = "CarregaImagensTopo", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
            IList<string> CarregaImagensTopo();

            [OperationContract]
            [WebInvoke(UriTemplate = "deleteImageTopo", BodyStyle = WebMessageBodyStyle.Wrapped,
                RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
            void deleteImageTopo(string pId);
        }


    MCP, MCTS 2.0 Web Applications, MCTS 3.5 ASP.NET
    segunda-feira, 27 de setembro de 2010 14:36
  • Boas Eduardo,

    E como está o seu arquivo *.svc?

    E tente inverter:

    <endpointBehaviors>
      <behavior name="FetchItens">
        <webHttp />
        <jsonErrorHandler />
      </behavior>
    </endpointBehaviors>
    http://www.israelaece.com
    segunda-feira, 27 de setembro de 2010 14:55
    Moderador
  • <%@ ServiceHost Language="C#" Debug="true" Service="HMV.Manager.Site.upload.uploadService" CodeBehind="uploadService.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>

     

        [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
        public class uploadService : IuploadService
        {
            public IList<string> CarregaImagensTopo()
            {
                IImageService srv = ObjectFactory.GetInstance<IImageService>();
                return srv.CarregaImagensTopo();
            }

            public void deleteImageTopo(string pId)
            {
                IImageService srv = ObjectFactory.GetInstance<IImageService>();
                srv.DeletaImagemTopo(pId);
            }
        }


    MCP, MCTS 2.0 Web Applications, MCTS 3.5 ASP.NET
    segunda-feira, 27 de setembro de 2010 14:56
  • Boas Eduardo,

    E tentou inverter os behaviors como mostrei acima?
    http://www.israelaece.com
    segunda-feira, 27 de setembro de 2010 15:57
    Moderador
  • Sim, vi nos comentarios do post que poderia ser isso mas não foi, eu tento marcar breakpoint no JsonErrorWebHttpBehaviorElement e não entra la.

    MCP, MCTS 2.0 Web Applications, MCTS 3.5 ASP.NET
    segunda-feira, 27 de setembro de 2010 16:36
  • Boas Eduardo,

    Então coloca o fullname do assembly no registro do behavior:

    <extensions>
      <behaviorExtensions>
        <add
            name="jsonErrorHandler"
            type="HMV.Core.Framework.Exception.JsonErrorWebHttpBehaviorElement, HMV.Core.Framework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      </behaviorExtensions>
    </extensions>

    http://www.israelaece.com
    segunda-feira, 27 de setembro de 2010 17:00
    Moderador
  • Não deu, fiz um codigo simples que reproduz o problema.

    Ve se consegue simular.

     

    http://cid-3f97af06feea3df9.office.live.com/self.aspx/.Public/WebApplication2.rar


    MCP, MCTS 2.0 Web Applications, MCTS 3.5 ASP.NET
    segunda-feira, 27 de setembro de 2010 17:18
  • Boas Eduardo,

    O problema é porque você não está colocando o fullname para o serviço e para a interface, e no WCF 4.0 como temos endpoints automáticos, ele acaba sendo um endpoint sem qualquer behavior configurado, e com isso o tratador do JSON não é disparado.

    <system.serviceModel>
      <services>
        <service name="WebApplication2.Service1" behaviorConfiguration="config">
          <endpoint
        binding="webHttpBinding"
        contract="WebApplication2.IService1"
        behaviorConfiguration="edpConfig" />
        </service>
      </services>
      <behaviors>
        <serviceBehaviors>
          <behavior name="config">
            <serviceDebug includeExceptionDetailInFaults="false" />
          </behavior>
        </serviceBehaviors>
        <endpointBehaviors>
          <behavior name="edpConfig">
            <jsonErrorHandler />
          </behavior>
        </endpointBehaviors>
      </behaviors>
      <extensions>
        <behaviorExtensions>
          <add
        name="jsonErrorHandler"
        type="WebApplication2.JsonErrorElement, WebApplication2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
        </behaviorExtensions>
      </extensions>
    </system.serviceModel>
    http://www.israelaece.com
    • Marcado como Resposta Eduardo Costa segunda-feira, 27 de setembro de 2010 17:48
    segunda-feira, 27 de setembro de 2010 17:30
    Moderador
  • Era isso mesmo, detalhezinho me matando, valeu ai
    MCP, MCTS 2.0 Web Applications, MCTS 3.5 ASP.NET
    segunda-feira, 27 de setembro de 2010 21:04