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?

Foi útil?

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.

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