Pergunta

Eu estou chamando um método em um webservice e ele está jogando um 403 WebException Proibida ...

System.Net.WebException: A solicitação falhou com status HTTP 403: Proibida.

Eu tenho esse erro registrado, mas eu realmente gostaria de ter a URI registrados na mensagem de log por isso é fácil determinar qual webservice está causando o problema.

Existe uma maneira simples para obter o URI do WebException é acionada? Eu olhei através da lista de propriedades e eu não posso ver nada que vai me o que eu quero.

Foi útil?

Solução

Você pode acessar a propriedade Url em seu SABÃO proxy do cliente objeto (tipo SoapHttpClientProtocol).

Se você está chamando dois serviços web diferentes de um método em seu código, basta colocar um try {} catch em torno das chamadas de serviço da web e lançar uma Exception costume apropriada com a propriedade Url do serviço de ofensa web.

Algo como:

string url = client.Url;
try
{
  client.MyWebServiceCall();
  url = client2.Url;
  client2.MyWebServiceCall2();
}
catch (Exception ex)
{
  throw new Exception("Webservice call failed. Url: "+url+", Error:"+ex.Message,ex);
}

Outras dicas

Esteja certo que você não está fazendo a chamada para o serviço através de um webproxy necessário autenticação. Você vai ter isso (talvez um ou 401) de erro e puxar seu cabelo para fora (como eu fiz) tentando descobrir onde a falha está ocorrendo. Eu não percebi o que estava acontecendo até que eu fiz um rastreamento de rede e encontrou os pedidos foram bater nosso procurador autenticado saída, eo pedido não tinha credenciais, e se recuperou.

Isso funcionou para mim para recuperar o Uri diretamente de um WebException:

Uri uri = wex.Response.ResponseUri;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top