1

我正在对我的网站进行负载测试。该站点使用 clientCredentialType="Windows" 调用在同一机器上运行的 WCF 服务。一切正常,直到我达到一定的负载(甚至不是很高),然后我收到以下错误:

System.ServiceModel.Security.MessageSecurityException:HTTP 请求被客户端身份验证方案“匿名”禁止。----> System.Net.WebException:远程服务器返回错误:(403)禁止。

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

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

成功后,我关闭:

proxy.Close();

出错时,我中止:

proxy.Abort();

有什么想法吗?我可以做些什么来更好地处理负载?要找什么?

4

3 回答 3

1

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

Juval Lowy 的优秀著作“Programming WCF Services”第 2 版的第 4 章涵盖了这个主题。

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

另外,请参阅 MSDN:如何:控制服务实例化

于 2009-01-21T23:15:44.200 回答
0

谢谢特里。不,我的服务不保持状态。我尝试用以下方式装饰我的服务类:

[ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerCall)]

没有帮助。故障点似乎是大约 4 个并发调用。

于 2009-01-22T00:26:52.667 回答
0

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

于 2009-01-28T02:48:27.877 回答