WCF在负载下失败 - MessageSecurityException

时间:2009-01-21 23:00:00

标签: .net wcf load-testing stress-testing

我正在加载测试我的网站。该站点使用clientCredentialType =“Windows”调用在同一个框上运行的WCF服务。一切正常,直到我达到一定的负荷(甚至不是很高),然后我得到以下错误:

  

System.ServiceModel.Security.MessageSecurityException:   禁止使用HTTP请求   客户认证方案   '匿名'。 ---->   System.Net.WebException:远程   服务器返回错误:(403)   禁止的。

每次通话后,我都会创建一个频道:

var proxy = (IClientChannel)channelFactory.CreateChannel();

成功之后,我结束了:

proxy.Close();

出错,我中止了:

proxy.Abort();

任何想法发生了什么?我能做些什么来更好地处理负载?该找什么?

3 个答案:

答案 0 :(得分:1)

您的服务是会话服务还是您不担心在通话之间保持状态?如果您没有州,则可能需要将服务标记为PerCall服务。这将确保服务实例仅在客户端调用正在进行时才存在。

Juval Lowy的优秀着作“编程WCF服务”第2版第4章涵盖了这一主题。

默认值为PerSession,可能不是您想要的。

此外,请参阅MSDN:如何:Control Service Instancing

答案 1 :(得分:0)

谢谢特里。我的服务没有维持状态。我尝试用以下方式装饰我的服务类:

[ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerCall)]

没有帮助。失败点似乎是大约4个并发呼叫。

答案 2 :(得分:0)

问题是,我正在我的开发盒上运行测试,这是XP,它使用IIS 5,它有10个连接的限制。