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".

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top