繁体   English   中英

在单独的线程中运行Web服务请求

[英]Run a web service request in separate thread

在C#XML Web Service类上,是否可以让IIS在单独的线程中提出每个客户端请求...我需要从需要eacj的单独库中添加一些代码

public class FlightOperationsService : WebService
{
    public string SayHello()
    {
        return (ExternalLibary.RunRequest()); // Must be in separate thread
    }
}

在多个客户端附加的情况下,每个请求都需要在单独的线程中运行,但它似乎是IIS或WebService类使用同一个线程导致外部库出现问题

如果你使用.net4.5尝试实现asyn / await并检查这是否解决了你的问题。 否则,您可以从System.Threading创建新线程。

请注意,创建新线程会占用服务器上的大量资源! 如果您有大量的客户端连接,这是不合适的。

ThreadPool.QueueUserWorkItem但这不是你的场景,因为你需要直接在函数中返回字符串。 更改代码的唯一方法是在.net 4.5中使用await / async,否则你需要使用一些async io方法。 这意味着您需要传入上下文,并在以后填充上下文中的值。

public IAsyncResult SayHello(AsyncContext context)
{
     // start a new async operation and return the IAsyncResult
}

void RealWork(AsyncContext context)
{
    context.SetValue("some thing");
}

它只是一个原型,真正的单词更难。 但我有一个建议在这里尝试程序编程, 你可以在这里获取样本和二进制文件,http://procedure.codeplex.com/ 作为项目的所有者,抱歉,我为自己制作了一个广告......如果您需要一些介绍或进一步的建议,请随时给我留言。

PS是否需要在一个单独的线程中处理请求取决于你是否有内存/处理器以外的操作,比如说网络/硬盘IO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM