ASP.Net WebApi STA 模式

2024-04-15

This post http://weblog.west-wind.com/posts/2012/Sep/18/Creating-STA-COM-compatible-ASPNET-Applications使 WebApi 无法在 STA 模式下运行。但这篇文章也有2年历史了。

我一直在研究较新的 WebApi2 但似乎找不到一种方法MessageHandlers http://www.asp.net/web-api/overview/working-with-http/http-message-handlers在 STA 模式下运行。

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


所以看来如果你想将整个请求处理线程切换到STA模式,你最好这样做MVC http://weblog.west-wind.com/posts/2012/Sep/18/Creating-STA-COM-compatible-ASPNET-Applications。但是,如果您的处理程序执行一项一次性任务,不涉及将整个线程切换到 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 性能负载测试 http://msdn.microsoft.com/en-us/library/vstudio/dd293540%28v=vs.110%29.aspx找出我的服务器上的最佳位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.Net WebApi STA 模式 的相关文章

  • 内联函数/方法

    声明 内联函数必须在调用之前定义 这个说法正确吗 EDIT 该问题最初是德语 内联功能穆森 弗 伊赫雷姆 奥夫鲁夫定义 sein 也许它对任何人都有帮助 是的 它是正确的 但只是部分正确 它可能正确地重新构建如下 内联函数必须在每个翻译单位
  • 将字节数组转换为托管结构

    更新 这个问题的答案帮助我编写了开源项目GitHub 上的 AlicanC 现代战争 2 工具 https github com AlicanC AlicanC s Modern Warfare 2 Tool 你可以看到我是如何阅读这些数据
  • ASP.NET Core 与现有的 IoC 容器和环境?

    我想运行ASP NET 核心网络堆栈以及MVC在已托管现有应用程序的 Windows 服务环境中 以便为其提供前端 该应用程序使用 Autofac 来处理 DI 问题 这很好 因为它已经有一个扩展Microsoft Extensions D
  • SSL/TLS/HTTPS 站点在 C#/.NET WebBrowser 控件中非常慢,但在 Internet Explorer 中则很好

    背景 我正在修改自动维基浏览器 http en wikipedia org wiki Wikipedia AutoWikiBrowser使用托管在安全服务器上的 MediaWiki 站点 我允许用户通过 C 应用程序中的 WebBrowse
  • 为什么大多数平台上没有“aligned_realloc”?

    MSVC有自己的非标准函数 aligned malloc aligned realloc and aligned free C 17和C11引入了 std aligned alloc 其结果可以是de分配有free or realloc B
  • (const T v) 在 C 中从来都不是必需的,对吗?

    例如 void func const int i 在这里 const是不必要的 因为所有参数都是按值传递的 包括指针 真的吗 C 中的所有参数确实都是按值传递 这意味着无论您是否包含该参数 实际参数都不会改变const or not 然而
  • C++中delete和delete[]的区别[重复]

    这个问题在这里已经有答案了 可能的重复 C 中的删除与删除 运算符 https stackoverflow com questions 2425728 delete vs delete operators in c 我写了一个包含两个指针的
  • 如何创建用于 QML 的通用对象模型?

    我想知道是否有任何宏或方法如何将 Qt 模型注册为 QObject 的属性 例如 我有AnimalModel http doc qt io qt 5 qtquick modelviewsdata cppmodels html qabstra
  • 带 If 的嵌套 For 循环的时间复杂度

    void f int n for int i 1 i lt n i if i int sqrt n 0 for int k 0 k lt pow i 3 k do something 我的思考过程 执行if语句的次数 sum i 1 to
  • 如何生成 appsettings..json 文件?

    我有一个 ASP NET Core 2 WebAPI 它将部署在以下环境中 INT QA STAGE 生产环境 基于上述 我需要有appsettings
  • 如何将带有自定义分配器的 std::vector 传递给需要带有 std::allocator 的函数?

    我正在使用外部库 pcl 因此我需要一个不会更改现有函数原型的解决方案 我正在使用的一个函数生成一个std vector
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何
  • 预处理后解析 C++ 源文件

    我正在尝试分析c 使用我定制的解析器的文件 写在c 在开始解析之前 我想摆脱所有 define 我希望源文件在预处理后可以编译 所以最好的方法是运行C Preprocessor在文件上 cpp myfile cpp temp cpp or
  • 默认析构函数做了多少事情

    C 类中的默认析构函数是否会自动删除代码中未显式分配的成员 例如 class C public C int arr 100 int main void C myC new C delete myC return 0 删除 myC 会自动释放
  • tabcontrol selectedindex 更改事件未被触发 C#

    嘿伙计们 我有一个很小的问题 请参阅下面的代码 this is main load private void Form1 Load object sender EventArgs e tabAddRemoveOperator Selecte
  • ASP.NET JQuery AJAX POST 返回数据,但在 401 响应内

    我的应用程序中有一个网页 需要调用我设置的 Web 服务来返回对象列表 这个调用是这样设置的 document ready function var response ajax type POST contentType applicati
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar
  • 如何引用解决方案之外的项目?

    我有一个 Visual Studio C 解决方案 其中包含一些项目 其中一个项目需要引用另一个不属于解决方案的项目 一开始我引用了dll
  • 受限 AppDomain 中的代码访问安全异常

    Goal 我需要在权限非常有限的 AppDomain 中运行一些代码 它不应该访问任何花哨或不安全的内容 except对于我在其他地方定义的一些辅助方法 我做了什么 我正在创建一个具有所需基本权限的沙箱 AppDomain 并创建一个运行代
  • 带有私有设置器的 EFCore Base 实体模型属性 - 迁移奇怪的行为

    实体模型继承的类内的私有设置器似乎会导致 EFCore 迁移出现奇怪的问题 考虑以下示例 其中有多个类 Bar and Baz 继承自Foo 跑步时Add Migration多次命令 添加 删除private修饰符 生成的模式在多个方面都是

随机推荐

  • 向下滑动显示textview动画

    我有兴趣在我的 Android 应用程序中添加一个切换 TextView 可见性的动画 我希望它不只是将可见性设置为 Visibility GONE 和 Visibility VISIBLE 相反 我希望它具有类似 jquery 的幻灯片效
  • SessionId/身份验证令牌生成的最佳实践

    我见过有人使用 UUID 来生成身份验证令牌 然而 在RFC 4122 http www ietf org rfc rfc4122 txt据称 不要假设 UUID 很难猜测 不应该使用它们 作为安全功能 仅拥有即可授予的标识符 访问 例如
  • C - 我使用什么选项来生成列表文件?

    我是 C 编程语言和 gcc 的新手 我正在尝试破译一个相当复杂的 C 程序 我想阅读一个有用的列表文件而不是源文件 我正在寻找由 gcc 编译器创建的列表文件 其中包含 所有包含的源代码 xref 交叉引用列表 变量声明位置的引用 例如
  • Asp.Net Core API 禁用启动完成消息

    作为我的应用程序的一部分 我有一个 Net Core API 项目 与该项目作为自己的进程运行的大多数情况不同 我让 API 在线程等单个进程中运行 另外 对于我的项目 我实现了一个自定义日志系统来满足我的需求 但是 我遇到了一个小问题 每
  • 如何将accessibilityIdentifier设置为UIAlertController?

    这就是我简单创建的方式UIAlertController并将其呈现在屏幕上 private class func showAlertWithTitle title String message String let alert UIAler
  • 使用 gdb 在指定的可执行文件之外单步执行汇编代码会导致错误“无法找到当前函数的边界”

    我在 gdb 的目标可执行文件之外 甚至没有与该目标对应的堆栈 无论如何 我想单步执行 以便我可以验证汇编代码中发生了什么 因为我不是 x86 汇编方面的专家 不幸的是 gdb 拒绝进行这种简单的汇编级调试 它允许我设置并停止在适当的断点上
  • 如何以相反的顺序遍历 boost::dynamic_bitset ?

    有没有办法以相反的顺序遍历 boost dynamic bitset 我的意思是我们通常通过 find first 找到第一个设置位 然后使用 find next 继续 是否有任何相应的 find last 和 find prev 或任何其
  • Angular Elements / Zone.js 事件侦听器减慢主页速度

    我们有一个 Angular 7 项目 它使用 Angular 元素生成自定义元素 此自定义元素用于 React 项目和 AngularJS 项目 当自定义元素的代码加载到这些项目之一中时 即使自定义元素没有渲染到 DOM 中 网站速度也会减
  • sequelize Model.hasOne 错误:模型未与 ModelTwo 关联

    我已将sequelizejs 集成到我的express 框架中 我配置了所有模型 并尝试用它构建我的第一个查询 我不断收到错误 错误 模型未与 ModelTwo 关联 app get function req res db Member f
  • 错误“无法加载 Boto 的 S3 绑定。”

    我遵循了提供的非常简洁的指南Django 存储 http django storages readthedocs org en latest backends amazon S3 html 从本地文件存储转换 并遇到了此异常 无法加载 Bo
  • 空查询时的最大返回值

    我有这样的疑问 int maxShoeSize Workers Where x gt x CompanyId 8 Max x gt x ShoeSize 将会有什么maxShoeSize如果8号公司根本没有工人呢 UPDATE 如何更改查询
  • 格式 xml,漂亮的打印

    我知道有两种 漂亮打印 或格式化 xml 的方法 外壳工具 http www shell tools net 技巧 38 使用通用身份样式表和 Xalan 漂亮打印 XML http etutorials org XML xml hacks
  • 以函数作为模板参数的部分特化拒绝

    得到了这段代码 该代码可以与以前版本的 gcc 一起编译良好 template
  • 有没有办法获取历史 YouTube 订阅者信息?

    目前 我正在通过以下请求检索每日订阅者信息 var videoOptions part snippet contentDetails statistics id videoIds Send request youtube videos li
  • Jquery UI 结合了可排序和可拖动

    我正在尝试组合一个可拖动面板 顶部 和一个可排序面板 底部 拖动工作正常 但排序失败 这是我的 JS 小提琴 http jsfiddle net dmUKY 9 http jsfiddle net dmUKY 9 拖放和排序功能共享drop
  • Objective C 中的继承问题

    我创建了一个 SDMutableGrid 类 以便我可以使用网格 它只是 NSMutableArray 的子级 其中包含的数组数等于网格中的行数 目前 程序在真正启动之前就退出了 似乎是因为为 NSMutableArray 定义的方法在某种
  • 通过控制台应用程序连接到 Oracle,不能通过 Web 服务连接

    我无法通过 asmx Web 服务连接到 Oracle 模式 而可以通过控制台应用程序 x86 连接到 Oracle 模式 代码 var conn new OracleConnection Data Source xe User ID my
  • 将多个值插入隐藏字段

    我有一个选择列表 您可以在其中选择多个城市 选择城市时 我想将邮政编码添加到隐藏字段 我现在的解决方案将值插入到隐藏字段 但是 当 fx 时它会覆盖该值 单击一个新城市 它应该只附加到值中 例如 value value1 value2 va
  • 为 Flask 应用提供服务是否需要 WSGI 服务器和 HTTP 服务器?

    使用 uWSGI 和 Nginx 设置 Flask 可能很困难 我尝试以下这个 DigitalOcean 教程 https www digitalocean com community tutorials how to serve flas
  • ASP.Net WebApi STA 模式

    This post http weblog west wind com posts 2012 Sep 18 Creating STA COM compatible ASPNET Applications使 WebApi 无法在 STA 模式