Mostre a resposta da WebService SoapException no cliente em ASP.NET
-
21-09-2019 - |
Pergunta
Estou tentando fazer um serviço de teste e jogar uma SoapException. Mas quando abro o serviço através do navegador, ele mostra o erro interno do servidor - 500.
Se eu tentar consumi -lo manualmente enviando um sabão criado manualmente (no Stringbuilder), recebo o mesmo erro "ServerError - 500" no próprio Visual Studio na linha "WebResponse response = req.GetResponse()
"
De qualquer forma, existe, eu posso realmente ver a "falha em resposta XML".
Solução 3
Depois de surfar por 5-6 horas, finalmente consegui ...... aqui está:
Quando você estiver recebendo a resposta manualmente, use o seguinte:
try
{
WebResponse response = req.GetResponse();
Stream str = response.GetResponseStream();
StreamReader rdr = new StreamReader(str);
Response.Write(rdr.ReadToEnd());
Response.End();
}
catch (WebException webEx)
{
Stream str = webEx.Response.GetResponseStream();
StreamReader rdr = new StreamReader(str);
Response.Write(rdr.ReadToEnd());
Response.End();
}
Outras dicas
Parece que há algo errado com o serviço e você precisa depurar -o no lado do servidor, em vez do lado do cliente. Chego a essa conclusão porque você tem um problema com o código do seu cliente e um navegador da Web.
Supondo que você esteja usando .NET, você ativou a exibição de erros do ASP.NET no servidor? Ver Este artigo Para informações.
Atualizar:
Então você está lançando um erro no servidor e deseja obter o texto de erro no cliente? Um erro no servidor deve resultar em uma mensagem de erro de 500 e é improvável que retorne qualquer XML ao cliente. Talvez você possa passar algo para o construtor de novembexception?
Você já olhou para o documentos para a sabonexception? Eles têm alguns exemplos de informações passantes usando a propriedade detalhada da SoapException.
Você pode chegar ao ASMX (assumindo que está usando o ASMX) no navegador para ver se está funcionando?