首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Web服务不处理来自具有代理类的同一应用程序的多个并发请求

Web服务不处理来自具有代理类的同一应用程序的多个并发请求
EN

Stack Overflow用户
提问于 2011-05-13 18:19:34
回答 1查看 2.8K关注 0票数 2

我有一个调度多个任务的应用程序,这些任务调用不同的web服务,有些是相同的web服务,但方法不同。每个任务都在一个间隔内执行,并且每个任务都在其自己的线程中运行。为了获得对webservice的引用,我有一个wsdl.exe生成的代理类,它在每个任务中被实例化,并且总是被释放。然而,当运行应用程序时,任务实际上在服务请求时相互等待,web服务在完成处理来自任务x的请求之前不会处理来自任务y的服务请求(我可以看到这一点,因为来自任务x的服务调用可能需要5分钟,任务y可能需要100毫秒,但是如果y在x运行时启动,则它在x完成后100毫秒结束)。

这是一个任务的代码(在它自己的线程中运行):

代码语言:javascript
运行
复制
public class TaskX : TaskWrapper
{
    public TaskX(Guid id, string name, EventQueue eventqueue)
        : base(id, name, eventqueue)
    {
    }

    protected override void DoTask()
    {

        try
        {
            var factory = new ServiceReferenceFactory();
            using (var reference = factory.GetServiceReference())
            {

                bool result;
                bool isSpecified;

                reference.Run(out result, out isSpecified);
            }
        }
    }
}

这是上面提到的工厂方法中的代码:

代码语言:javascript
运行
复制
public ProxyClassService GetServiceReference()
    {
                    var refer = new ProxyClassServiceNamespace.ProxyClassService();
                    refer.Timeout = 1000 * 60 * 60;

                    return refer;
    }

有人知道我为什么会有这种行为吗?

编辑:

以下是在我将ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)添加到我的wcf服务的实现之后的一些任务日志。我没有对在visual studio 2008中创建的wcf服务进行任何配置更改。

15:02 -任务开始: TaskXWithInternalException

15:02 -任务开始: TaskYQuickOne

15:02 -任务结束: TaskYQuickOne任务耗时: 00:00:00.1214762

15:02 -任务开始: TaskZSlowOne

15:03 -任务开始: TaskXWithInternalException

15:03 -任务开始: TaskYQuickOne

15:05 -任务结束: TaskZSlowOne任务耗时: 00:03:11.6510947

15:05 -任务结束: TaskYQuickOne任务耗时: 00:02:09.7311905

15:06 -任务开始: TaskYQuickOne

15:06 -任务结束: TaskYQuickOne任务耗时: 00:00:00.0546980

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-13 20:20:19

这可能与WCF服务上的concurrency/instancing settings有关。

如果所有的调用都去往相同的服务实例(例如InstanceContextMode = PerSession or Single),那么通常需要确保将ConcurrencyMode设置为Multiple,否则调用将以序列化的方式提供服务。

你能告诉我们更多关于WCF服务(而不是客户端)是如何设置的吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5990469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档