我正在加载测试我的网站。该站点使用clientCredentialType =“Windows”调用在同一个框上运行的WCF服务。一切正常,直到我达到一定的负荷(甚至不是很高),然后我得到以下错误:
System.ServiceModel.Security.MessageSecurityException: 禁止使用HTTP请求 客户认证方案 '匿名'。 ----> System.Net.WebException:远程 服务器返回错误:(403) 禁止的。
每次通话后,我都会创建一个频道:
var proxy = (IClientChannel)channelFactory.CreateChannel();
成功之后,我结束了:
proxy.Close();
出错,我中止了:
proxy.Abort();
任何想法发生了什么?我能做些什么来更好地处理负载?该找什么?
答案 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个连接的限制。