0

我有一个调用我的 WCF 服务的负载测试器,并且我已经使用选项来构建它以并行或不并行运行调用。仅当并行运行时,所有线程都会出现以下错误:“服务器没有提供有意义的回复;这可能是由合同不匹配、会话过早关闭或内部服务器错误引起的。”

这或多或少是我的代码:

            if (runMultiThreaded)
            {
                ParallelOptions options = new ParallelOptions();
                options.MaxDegreeOfParallelism = System.Environment.ProcessorCount;
                ParallelLoopResult loopResult = Parallel.For(0, numberOfTimesToTest, options,
                    (i, loopState) =>
                    {
                        myService.MyOperation();
                        if (loopState.ShouldExitCurrentIteration) return;
                    });
            }
            else
            {
                for (int i = 0; i < test1NumberOfRuns; i++)
                {
                        myService.MyOperation();
                }
            }

有任何想法吗?如果您需要更多详细信息,请告诉我。

更新: myService 是我的服务操作合同接口的一个实例,它是使用 ChannelFactory 使用 CreateChannel 方法创建的。

谢谢!

4

1 回答 1

2

我假设您myServiceClientBase<T>通过显式创建的子类或频道ChannelFactory<T>::CreateChannel?如果是这样,则不能保证这些实例是线程安全的,因此您需要每个工作线程都有一个实例。

于 2012-11-16T04:36:26.957 回答