如何使用 ASP.NET MVC、WebAPI 和 MEF 正确确定每个请求的组合范围

2024-01-10

我最近使用各种资源(包括此 SO 答案)将 MEF 添加到 MVC/WebAPI 应用程序如何将 MEF 与 ASP.NET MVC 4 和 ASP.NET Web API 集成 https://stackoverflow.com/questions/13566688/how-to-integrate-mef-with-asp-net-mvc-4-and-asp-net-web-api/19326535#19326535。虽然这工作了一段时间,但我开始收到与建立数据库连接相关的间歇性错误,最常见的错误是:“System.InvalidOperationException:超时已过期。从池中获取连接之前超时时间已过。这可能是发生这种情况是因为所有池连接都在使用中并且达到了最大池大小。”

我意识到我正在泄漏连接,但不明白为什么。我的所有存储库都实现了 IDisposable 并在完成后释放它们的连接。在我的处理方法中放置断点很快发现它们从未被击中。当我基于上面链接的示例编写代码时,我注意到缺少任何清理,但作为 MEF 和 MVC 的新手,我错误地认为清理是在 MVC/MEF 的依赖管道中的某个地方完成的。

我想知道其他人如何使用 MEF 在 MVC 和 WebAPI 中根据每个请求正确确定组合范围?

我到处都找到了模糊的指导,它们都是针对 MVC 或 WebAPI 的。 Mef.codeplex 在这里有一个几乎完整的以 MVC 为中心的解决方案:https://mef.codeplex.com/releases/view/79090 https://mef.codeplex.com/releases/view/79090但它基于 MVC 的预览版本。我在这里找到了一个WebAPI解决方案:https://github.com/WebApiContrib/WebApiContrib.IoC.Mef https://github.com/WebApiContrib/WebApiContrib.IoC.Mef。我目前正在推出自己的解决方案,但由于我讨厌重新发明轮子,所以我想我会问一下是否有人知道是否已经有一个解决方案。


在没有找到令我满意的东西后,我最终在假期里自己解决了这个问题。 CodePlex 上的 MEF 贡献有一个良好的开端,但尚未完成。我对它进行了一些修改,并结合了一些研究和反复试验。

我在 Github 上创建了一个项目(链接如下,我知道外部链接不受欢迎,但包含内联代码太多)。其中有四个项目。第一个提供核心组合和拆卸,两个库分别将核心放入 MVC 和 WebAPI 的上下文中,最后一个只是一个快速示例 MVC 应用程序,其中有两个控制器,每个控制器都依赖于注入的另一个类。需要注意的是,我认为 WebAPI 项目尚未完成,因为它尚未包含 WebAPI 过滤器提供程序的设施(也许还有我还没有想到或需要的其他东西)。

我希望这有帮助。

https://github.com/rlvandaveer/Heliar-Web-Composition https://github.com/rlvandaveer/Heliar-Web-Composition

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 ASP.NET MVC、WebAPI 和 MEF 正确确定每个请求的组合范围 的相关文章

  • 如何在编辑器模板中获取序列/数组索引?

    案件 我有一个使用 X 类编辑器模板显示的 X 类项目列表 问题 如何获取编辑器模板内部正在处理的项目的索引 我一直在使用这个 HtmlExtension 它只返回迭代所需的 id 它基本上是一个正则表达式ViewData Template
  • 元数据集合中不存在标识为“ ”的成员。\r\n参数名称: Identity

    我在尝试调试时稍微简化了代码 HttpPost public ActionResult Register User model DateTime bla new DateTime 2012 12 12 try User user new U
  • 如何将 Razor 视图转换为字符串?

    我想使用我的 Razor 视图作为某种发送电子邮件的模板 所以我想将我的模板 保存 在视图中 将其作为字符串读入控制器 进行一些必要的替换 然后发送它 我有有效的解决方案 我的模板作为 HTML 页面托管在某处 但我想将其放入我的应用程序中
  • 相对于路径匹配路由

    我想要任何以以下结尾的网址 templates filename 使用路由属性映射到特定控制器 例如 public class TemplateController Controller Route templates templateFi
  • 单击关闭按钮后不显示 Google 一键登录 UI

    我正在尝试按照本指南使新的谷歌一键登录工作 https developers google com identity one tap web https developers google com identity one tap web
  • Razor CheckBox用于在视图中有条件地检查和取消检查

    在我看来 我有 Html CheckBoxFor m gt m IsExist new id IsExist In my Model我有来自数据库的 IsExist 值 要么是真的 要么是假的 现在我如何根据 IsExist 中的 true
  • 64 位 ASP.NET MVC 应用程序无法运行

    首先 我之前曾设法让我的一个 64 位测试 Web 应用程序在这台机器上运行 当我为这个项目制作原型时 我已经在 32 位环境中工作了几周 意识到我需要将应用程序切换到 64 位 当我这样做 在项目中将目标平台设置为 x64 并重新部署时
  • 单个控制器站点的 ASP.NET MVC 路由

    我正在尝试创建一个简单的网站 基本上它有一个控制器Home控制器 该控制器有一个动作Index需要一个string作为参数 这是一个目录 并使用该 目录 来完成其工作 我不知道如何创建一个通用的捕获所有路由 将每个 URL 发送到此一个操作
  • 如何使用 ASP.NET MVC 编辑多选列表?

    我想编辑一个如下所示的对象 我希望用 UsersGrossList 中的一个或多个用户填充 UsersSelectedList 使用 mvc 中的标准编辑视图 我只得到映射的字符串和布尔值 下面未显示 我在 google 上找到的许多示例都
  • 使用 App Insights 将相关 ID 添加到自动生成的遥测数据中

    我对 Application Insights 非常陌生 我正在考虑将其用于我计划使用 asp net webapi 实现的一组服务 我能够非常轻松地启动并运行基本遥测 右键单击 VS 上的项目 添加应用程序洞察 但随后我遇到了障碍 我计划
  • 使用另一个 MEF 程序集中的类而不引用它

    我有 2 个 MEF 组件 设其为A成分和B成分 我需要的是能够从组件 A 中的组件 B 访问一个类 而不需要引用它 然后我想手动实例化该类的对象 目前我看到 MEF 允许使用 Import 自动实例化对象 它使用需要引用的接口 我可以使用
  • 以字符串数组作为参数的操作

    我想调用与此 uri 类似的操作 http server controller action columns firstname columns lastname columns age 并像这样使用它 public ActionResul
  • asp.net mvc jquery 下拉验证

    我如何使用不显眼的 javascript 验证下拉列表 作为所需验证器的验证文本框 但它不适用于下拉列表 需要更改不显眼的 js 文件吗 或者还有其他选项来验证下拉列表吗 我想在我的 javascript 中检查 form validate
  • 将跟踪消息获取到来自控制器的失败请求跟踪中

    在 ASP NET MVC Preview 5 上 我们无法从全局或控制器获取任何跟踪消息以显示在页面 视图 或失败请求跟踪 FREB 中 这些调用都不能在控制器操作中工作 HttpContext Trace Write hello Sys
  • 从 ApiController 中的 json 序列化中排除属性

    我试图在 Web ApiControllers 中排除属性被序列化为 JSON 我已经验证了以下 2 个场景的工作原理 我已在我希望排除的属性中包含以下属性 System Web Script Serialization ScriptIgn
  • 新 ASP.NET MVC 3 站点的 Razor 与 Webforms 视图引擎

    剃刀更漂亮 而且是新的 因此很酷 Webforms 是我已经熟悉的东西 当然 我毫无疑问会去学习新东西 Razor 但我听说有两个令我担心的缺点 无法轻松重用现有的 Web 表单控件 在极少数情况下 我可能需要拖动一些东西 我会重申 罕见
  • MVC 5 中具有 ASP.NET Identity 的 Autofac 不会验证 OWIN 管道中的安全标记

    我在 MVC 5 中设置了 AutoFac 来与 ASP NET Identity 一起使用 表面上一切似乎都工作正常 即用户可以创建帐户并登录 但后来我发现 当安全标记更改时 用户不会注销 通过在 AspNetUsers 表中进行暴力破解
  • JavaScript 错误:MVC2 视图中的条件编译已关闭

    我试图在 MVC2 视图页面中单击时调用 JavaScript 函数 a href Select a JavaScript 函数 function SelectBenefit id code alert id alert code 这里 b
  • 如何对使用 Controller.User 变量的控制器操作进行单元测试?

    我有一个控制器操作 如果用户已经登录 它会自动重定向到新页面 User Identity IsAuthenticated 针对这种情况编写单元测试以确保重定向发生的最佳方法是什么 我一直在使用以下 Mocks 和 Moq 来允许在我的单元测
  • 在 C# 的 WebAPI 中的 ApiController 上使用“传输编码:分块”提供数据

    我需要服务分块传输使用编码数据API控制器 因为我无权访问HttpContext or the Http请求 我有点不知道在哪里写入响应以及在哪里刷新它 设置如下 public class MyController ApiControlle

随机推荐

  • 如何使用日期选择器在 Angular Material 5.0.0 中选择日期范围?

    我正在使用最新的Angular Material 5 0 0 rc0在我的 Angular 5 应用程序中 我正在尝试选择一个日期范围datepicker提供了 Angular 材料 但我找不到任何相关文档 我所能做的就是选择一个start
  • 最大化 div 的高度,周围元素的高度可变

    我有一个 div 我想在基于 100vh 的父级中最大化其大小 问题是我有两个pdiv 还可以根据窗口的宽度更改其高度 从而导致大小变化 现在 快速但肮脏的解决方案可能只是运行 jQuery 片段来检测父级的大小div and pdiv 并
  • 生成具有 2 个 OU 名称的 CSR

    我必须创建一个生成 CSR 的应用程序 在生成 CSR 时 我们需要填写一些详细信息 例如 CN OU 等 问题是我必须向其发送 CSR 的认证机构需要 2 个 OU 组织单位 名称 我用 google 搜索了很多 但找不到任何使用 ope
  • 如何在 Google Analytics 中跟踪“打开新标签”流量

    我有一个推荐网站 它使用一个网址来访问我的实施了谷歌分析的网站 当用户单击链接时 推荐网站会在同一窗口的新选项卡中打开我的网站 我想为每个推荐网站创建一个配置文件 以便每个配置文件都有自己的有关用户活动和交易转化的报告 我是谷歌分析的新手
  • R - 将 data.frame 转换为多维矩阵

    来自 data frame 的示例 x data frame c 1 1 2 2 3 3 c 1 2 1 2 1 2 c 1 1 1 2 2 2 c 12 14 22 24 34 28 colnames x c Store Dept Yea
  • 将 Google Analytics 添加到 Rails 4.2 应用程序

    我有一个使用 Heroku 部署的 Rails 4 2 应用程序 并且尝试向其中添加 Google Analytics 但是 Google Analytics 没有获取任何会话 有什么建议为什么以及如何解决这个问题吗 CODE app la
  • 在办公室 LAN 上设置 xampp 服务器

    我希望在小型办公室内使用 xampp 设置服务器 我当然会保护 xampp 但为了使我的 web 应用程序可供网络上的其他 4 台电脑使用 我是否只创建一个虚拟主机 有没有办法确保只能在局域网上访问Web应用程序 当前设置包括 4 台计算机
  • OpenGL 旋转

    我正在尝试在 OpenGL 中进行简单的旋转 但一定没有抓住重点 我并不是在寻找具体的修复方法 而是在寻找快速解释或更普遍地解释 OpenGL 旋转的链接 目前我有这样的代码 glPushMatrix glRotatef 90 0 0 0
  • 使用 Hadoop MapRed 排序

    Well 我想知道如何在reduce 任务之后更改简单WordCount 程序的排序顺序 我已经制作了另一个按值排序而不是按键排序的映射 但它仍然按升序排序 有没有一种简单的方法可以做到这一点 更改排序顺序 谢谢 韦洛佐 如果您使用的是旧版
  • Android Work Manager - Work Manager 是否能 100% 确保后台执行完成?

    根据我从文档中读到的内容https developer android com topic libraries architecture workmanager https developer android com topic libra
  • 如何限制pyqt中QLineEdit中的用户输入

    我有一个QLineEdit我想限制QLineEdit仅接受整数 它应该像输入掩码一样工作 但我不想用inputmask 因为如果用户点击QLineEdit光标将位于鼠标单击的位置 用户需要导航到 0 位置并输入他想要的内容 有没有什么替代方
  • 如何在 SQL Server 2012 中设置每周自动备份?

    请建议我如何在 SQL Server 2012 中设置自动数据库备份 我需要对 SQL Server 中的所有数据库 目前仅包含 3 个 进行每周自动备份 该备份在每周五 0100 点 凌晨 1 点 运行 这些备份文件 bak 应放置在 E
  • Swift NSScriptCommand 执行默认实现

    我在 Objective C 中使用了这段代码 implementation KDOrderInfo id performDefaultImplementation NSString theRequest self directParame
  • 使用 MailKit 和 Gmail OAuth 发送邮件

    我正在尝试创建一个应用程序 在客户购买时向他们发送电子邮件 我们有自己的 GMail 帐户 我将用它来发送电子邮件 我已经设置了我的应用程序并在 Google API 控制台中创建了凭据 我发现这个问题 https github com j
  • 如何调用API(Oauth 1.0)?

    我试图调用这个API Oauth1 0标准 https appcenter intuit com api v1 Connection Reconnect https appcenter intuit com api v1 Connectio
  • C/C++宏嵌套替换逻辑

    我正在尝试实现 C C 兼容的宏处理 我可以正确处理许多极端情况 包括此处讨论的情况 了解宏间接扩展自身时 C 预处理器的行为 https stackoverflow com questions 66593868 understanding
  • UITableView 单元格重叠

    我正在实现一个带有部分索引的 tableView 每当任何特定部分中的行超过一行时 我的 tableViewCell 就会重叠 这是我的代码 NSInteger numberOfSectionsInTableView UITableView
  • Asp.net MVC 编辑器出现“类型‘System.Object’是在未引用的程序集中定义的”错误

    using Html BeginForm Index Employees FormMethod Post new encType multipart form data name EmployeeForm table class table
  • 在 glass 应用程序中创建“ok glass”样式菜单

    我刚刚开始为 Google Glass 进行开发 并且我知道 GDK 相当新 所以这可能还不可能 但我正在尝试 与 okay glass 屏幕上的 拨打电话 提示或 发送消息至 提示一样 我希望我的应用程序在您使用语音选择时具有更多语音选择
  • 如何使用 ASP.NET MVC、WebAPI 和 MEF 正确确定每个请求的组合范围

    我最近使用各种资源 包括此 SO 答案 将 MEF 添加到 MVC WebAPI 应用程序如何将 MEF 与 ASP NET MVC 4 和 ASP NET Web API 集成 https stackoverflow com questi