SoapException

Padrão

Agora que estou trabalhando com webservices e flex, me deparei com uma situação interessante.
O Flex não conseguia detectar corretamente qual a exceção tinha sido lançada no web service.

Depois de muita algumas pesquisas no forum da Adobe e no Google, acabei achando um link que salvou a pátria:
http://blogs.sparknettech.com/blog/2007/10/31/flex-webservice-error-handeling/

O problema, segundo o blog da SparkNET Technologies, é um bug no Flex.
Ainda segundo o blog, o Flex não reconhece exceções com status code acima de 200;
Então a solução é abaixar o status code da resposta do soap toda vez que for uma exception.

No caso da linguagem C#, basta editar o arquivo Global.asax acrescentando a instrução:

    protected void Application_EndRequest(object sender, EventArgs e)
    {
        if (Context.Response.StatusCode == 500 || Context.Response.StatusCode == 300)
        {
            Context.Response.StatusCode = 200;
        }

Para lançar a exceção no C#:

throw new SoapException("Mensagem Enviada do Servidor", SoapException.ClientFaultCode);
Anúncios

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s