WCF falha sob carga - MessageSecurityException
-
19-08-2019 - |
Pergunta
Estou carga testar meu site. As chamadas site para um serviço WCF em execução no mesmo caixa usando clientCredentialType = "Windows". Tudo funciona até eu chegar a uma determinada carga (o que não é ainda muito alta), então eu recebo o seguinte erro:
System.ServiceModel.Security.MessageSecurityException: A solicitação HTTP foi proibida com esquema de autenticação do cliente 'Anônimo'. ----> System.Net.WebException: O controle remoto servidor retornou um erro: (403) Proibida.
Após cada chamada I criar um canal:
var proxy = (IClientChannel)channelFactory.CreateChannel();
Em caso de sucesso, eu perto:
proxy.Close();
Em caso de erro, eu abortar:
proxy.Abort();
Todas as idéias que está acontecendo? O que posso fazer para lidar com cargas melhor? O que procurar?
Solução 3
O problema era, argh, que eu estava correndo o teste na minha caixa de dev, que é XP, que usa o IIS 5, que tem um limite de 10 conexões.
Outras dicas
é o vosso culto a Service Sessionful ou você não se preocupar em manter o estado entre chamadas? Se você não tem estado, você pode querer marcar o seu serviço como um serviço PerCall. Isso fará com que a instância de serviço só existe quando uma chamada do cliente está em curso.
O capítulo 4 do livro excelente de Juval Lowy "Programação WCF Services" 2nd Edition abrange este tema.
O padrão é PerSession que pode não ser o que quiser.
Além disso, veja isso no MSDN: How To: Service Control Instancing
Graças Terry. No meu serviço não manter o estado. Eu tentei decorar minha classe de serviço com:
[ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerCall)]
Sem ajuda. O ponto de falha parece estar em cerca de 4 chamadas simultâneas.