gpt4 book ai didi

c# - ASP.Net WebApi STA模式

转载 作者:行者123 更新时间:2023-11-30 14:56:20 24 4
gpt4 key购买 nike

post使 WebApi 无法在 STA 模式下运行。但是这篇文章也有 2 年了。

我一直在研究较新的 WebApi2,但似乎找不到制作 MessageHandlers 的方法。在 STA 模式下运行。

那么有没有人找到在 STA 模式下运行 WebApi 或 WebApi2 的方法?

最佳答案

所以看起来如果你想把整个请求处理线程切换到STA模式,你最好使用MVC .但是,如果您的处理程序执行不涉及将整个线程切换到 STA 模式的一次性任务,则 Web API 会使它变得非常简单。这是我的做法:

public class StaHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
// consider moving it to singleton instance to improve performance
var staTaskScheduler = new StaTaskScheduler(100);

return Task.Factory.StartNew<HttpResponseMessage>(() =>
{
//somethign that does its magic and returns a HttpResponseMessag
return new HttpResponseMessage();
}, cancellationToken,
TaskCreationOptions.None,
staTaskScheduler);
}
}

需要考虑的事项:

  • 创建 StaTaskScheduler 很繁重。考虑将其移至单例或确保它在 App_Start 期间仅初始化一次
  • 线程池大小(在我的示例中为 100)也可以影响这种扩展的程度。不幸的是,没有神奇的公式可以做到这一点。我创建了 Web Performance Load Tests找出我的服务器上的最佳位置。

关于c# - ASP.Net WebApi STA模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23114832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com