locked
Erro ao Utilizar o SSIS WebService Task RRS feed

  • Pergunta

  • Senhores,

    Estou tentando a utilização de um serviço de WebService pelo SSIS, porém me retorna o seguinte erro:

    Error: 0xC002F304 at Web Service Task, Web Service Task: An error occurred with the following error message: "Microsoft.SqlServer.Dts.Tasks.WebServiceTask.WebserviceTaskException: Could not execute the Web method. The error is: Referncia de objeto no definida para uma instncia de um objeto..

    em Microsoft.SqlServer.Dts.Tasks.WebServiceTask.WebMethodInvokerProxy.InvokeMethod(DTSWebMethodInfo methodInfo, String serviceName, Object connection)

    em Microsoft.SqlServer.Dts.Tasks.WebServiceTask.WebServiceTaskUtil.Invoke(DTSWebMethodInfo methodInfo, String serviceName, Object connection, VariableDispenser taskVariableDispenser)

    Alguém sabe do que se trata?

    Grato,

    Marco A. Oliveira

     


    Marco A. Oliveira
    segunda-feira, 27 de junho de 2011 19:50

Todas as Respostas

  • Boa Noite,

    O erro é muito claro. Há algum problema com o Web Service na chamada desse método. Eu investigaria se a chamada para o Web Service está correto. Opcionalmente, veja se nos logs do servidor Web como a chamada do serviço está sendo feita.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    segunda-feira, 27 de junho de 2011 21:35
  • Gustavo,

    Muito Obrigado pela resposta, mas tenho mais alguns dados, vê se consegue me ajudar...

    Descobri que os métodos do Webservice retornam classes e não só um XML como eu esperava, existe alguma maneira de eu conseguir capturar isso no SSIS?

     

    Grato,

    Marco A. Oliveira


    Marco A. Oliveira
    terça-feira, 28 de junho de 2011 12:51
  • Bom Dia,

    O WSDL foi informado no momento de chamar o método do Web Services ? Como trata-se de uma classe, acredito que o retorno deva ser para uma variável do tipo Object. Posteriormente você deve utilizar um script task para retirar as propriedades dessa classe.

    Há outras alternativas, mas ainda assim recomendo usar o WebService Task:

    - Você pode fazer a chamada a partir de um script task e assim instanciar a classe em .NET para pegar o retorno do Web Service
    - Você pode tentar pegar o conteúdo da página ao invés da classe (algum método HTTP deve fazer isso), mas acredito que também seja necessário usar um script task

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    terça-feira, 28 de junho de 2011 13:08
  • Gustavo, Bom dia,

    Sim, o WSDL foi informado e a conexão com ele está funcionando, porém quando tento jogar o retorno para uma variável, mesmo com o tipo Object que tentei após a sua sugestão, ocorre o erro que mencionei no primeiro Post, que pensei estar acontecendo por estar tentan jogar uma classe em uma variável string.

    Será que tem algo de errado no meu processo ainda ou o Serviço do Webservice pode estar com problemas?

    Sabe de algum lugar que possua algum exemplo da sua sugestão para que possa dar uma olhada?

     

    Novamente Grato,


    Marco A. Oliveira
    terça-feira, 28 de junho de 2011 13:52
  • Bom Dia Marco,

    Eu sugiro dar uma olhadinha nos logs do servidor Web se for possível.
    Você consegue chamar por outro lugar (.asmx ou algo assim) ?

    Me parece que o erro está na chamada do método e não no SSIS. Se fosse no SSIS acho que daria outra mensagem de erro.

    [ ]s,

    Gustavo Maia Aguiar
    httP://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    terça-feira, 28 de junho de 2011 14:13
  • Gustavo,

    Desculpe se estiver abusando da sua boa vontade, mas não tenho ver os logs do servidor como indicou e nem chamar de outro lugar, por isso tenho que me certificar de que o erro é realmente do Webservice para então acionar os pais do mesmo...

    Tentei utilizar alguns serviços de Webservice que achei na Internet, para teste se através do Step Webservice Task do SSIS conseguiria acessar e todos eles me retornam o mesmo erro que mencionei no primeiro Post, será que tem alguma trava do meu processo/rede que possa causar isso, ou conhece algum serviço de Webservice mais confiável que os exemplos abaixo para que eu possa testar?

    http://www.webservicex.net/ConvertTemperature.asmx?WSDL

    http://www.webservicex.net/whois.asmx?WSDL

    http://www.webservicex.net/sendsmsworld.asmx?WSDL

    Novamente Grato,

     


    Marco A. Oliveira
    terça-feira, 28 de junho de 2011 20:31
  • Boa Tarde,

    Bastaria escrever uma rápida aplicação em C#, PHP ou JavaScript para verificar se você consegue usar o WebService com êxito. Se alguma outra aplicação conseguir usar com o mesmo método e parâmetros e na mesma máquina que o SSIS, então de fato teremos que verificar qual é o problema no SSIS.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    quinta-feira, 30 de junho de 2011 17:48
  • Gustavo, Boa Tarde,

    Consegui fazer o teste, criei um Webservice básico pelo Visual Studio 2008, deixando o Método de exemplo que ele cria "Hello World"... Tentei o acesso via SSIS, consegui acessar o WebService e seu Método HelloWorld, mas quando tentei rodar deu o mesmo erro...

    Tá dificil!!!

    Alguma luz?

     

    Novamente Grato,

    Marco A. Oliveira


    Marco A. Oliveira
    quinta-feira, 30 de junho de 2011 20:06
  • Oi Marco,

    Acho que eu olhei superficialmente, mas a mensagem de erro me dá algumas pistas. As variáveis utilizadas para capturar o retorno do WebService estão configuradas no WebService Task ? É que toda vez que um objeto no SSIS (Control Flow) for manipular variáveis você tem que explicitar (ReadOnly e ReadWrite Variables).

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    quinta-feira, 30 de junho de 2011 22:13
  • Bom dia Gustavo,

    No meu caso principal sim, coloquei para retornar para uma variável tipo Object como sugeriu acima, mas no caso do teste com o WebService (Hello World) coloquei para retornar o resultado para um arquivo texto.

     

    Novamente Grato,


    Marco A. Oliveira
    sexta-feira, 1 de julho de 2011 12:03
  • Gustavo, Boa Tarde,

    Tive um avanço, efetuei a atualização do SQL e consegui fazer funcionar com o WebService Local, mas com Webservices da Internet agora apresenta o seguinte erro:

    SSIS package "Package.dtsx" starting.

    Error: 0xC002F304 at Web Service Task, Web Service Task: An error occurred with the following error message: "Microsoft.SqlServer.Dts.Tasks.WebServiceTask.WebserviceTaskException: The Web Service threw an error during method execution. The error is: Falha na solicitao com status HTTP 407: Proxy Authentication Required ( O Forefront TMG requer autorizao para atender solicitao. O acesso ao filtro de Proxy da Web foi negado. )..

    em Microsoft.SqlServer.Dts.Tasks.WebServiceTask.WebMethodInvokerProxy.InvokeMethod(DTSWebMethodInfo methodInfo, String serviceName, Object connection)

    em Microsoft.SqlServer.Dts.Tasks.WebServiceTask.WebServiceTaskUtil.Invoke(DTSWebMethodInfo methodInfo, String serviceName, Object connection, VariableDispenser taskVariableDispenser)

    em Microsoft.SqlServer.Dts.Tasks.WebServiceTask.WebServiceTask.executeThread()".

     

    Aparentemente algo ligado a minha rede agora...

     

     


    Marco A. Oliveira
    sexta-feira, 1 de julho de 2011 19:27
  • Amigo no caso do seu webservice retornar uma classe sugiro você efetuar o tratamento a partir de um script task em .net é mais performatico e mais simples de administrar.

    Qualquer duvida post novamente.

     

    terça-feira, 2 de agosto de 2011 20:56