2009-01-21 107 views
1

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

System.ServiceModel.Security.MessageSecurityException: The HTTP request was forbidden with client authentication scheme 'Anonymous'. ----> System.Net.WebException: The remote server returned an error: (403) Forbidden.

在每次调用创建一个通道:

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

成功时,我收盘:

proxy.Close(); 

上的错误,我放弃:

proxy.Abort(); 

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

回答

0

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

1

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

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

默认是PerSession,它可能不是你想要的。

而且,看到这个MSDN上:如何:Control Service Instancing

0

感谢特里。我的服务不保持状态。我尝试装饰我的服务类:

[ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerCall)] 

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

+0

WCF服务正在做什么样的工作?你可以尝试的另一件事是嘲笑你的服务。使用相同的接口,但实际的服务代码无效。看看你是否有类似的问题。如果没有,在服务中放置一些Thread.Sleep来模拟正在发生的事情。 – 2009-01-22 19:44:58