在 Web 应用程序 Application_Start 方法中初始化 NServiceBus 时出现 NullReferenceException

2023-12-02

我正在运行 NServiceBus 2.0 RTM,当我的 MessageModule 将 CurrentSessionContext 绑定到我的 NHibernate sessionfactory 时,我收到 NullReferenceException。

在我的 Application_Start 中,我调用以下方法:

public static void WithWeb(IUnityContainer container)
{
    log4net.Config.XmlConfigurator.Configure();

    var childContainer = container.CreateChildContainer();

    childContainer.RegisterInstance<ISessionFactory>(NHibernateSession.SessionFactory);

    var bus = NServiceBus.Configure.WithWeb()
        .UnityBuilder(childContainer)
        .Log4Net()
        .XmlSerializer()
        .MsmqTransport()
        .IsTransactional(true)
        .PurgeOnStartup(false)
        .UnicastBus()
        .ImpersonateSender(false)
        .LoadMessageHandlers()
        .CreateBus();

    var activeBus = bus.Start();

    container.RegisterInstance(typeof(IBus), activeBus);
}

当总线启动时,我的消息模块以以下内容启动:

public void HandleBeginMessage()
{
    try
    {
        CurrentSessionContext.Bind(_sessionFactory.OpenSession());
    }
    catch (Exception e)
    {
        _log.Error("Error occurred in HandleBeginMessage of NHibernateMessageModule", e);
        throw;
    }
}

在查看我的日志时,我们在调用绑定方法时记录以下错误:

System.NullReferenceException: Object reference not set to an instance of an object.
at NHibernate.Context.WebSessionContext.GetMap()
at NHibernate.Context.MapBasedSessionContext.set_Session(ISession value)
at NHibernate.Context.CurrentSessionContext.Bind(ISession session)

显然,访问 HttpContext 时存在一些问题。配置 NServiceBus 的调用是否应该在生命周期中晚于 Application_Start 发生?或者其他人是否使用过另一种解决方法来让处理程序在 Asp.NET Web 应用程序中工作?

谢谢, 史蒂夫


在这种情况下我不会使用 WebSessionContext,正是因为 NServiceBus 可以独立于 HttpContexts 进行操作。如果您想使用单个会话上下文实现来处理 Web 和 NServiceBus 消息,我会实现NHibernate.Context.ICurrentSessionContext使用混合存储,即如果 HttpContext.Current != null,则使用 HttpContext 作为会话存储。否则使用线程本地存储。这与 Castle ActiveRecord 的做法类似HybridWebThreadScopeInfo.

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

在 Web 应用程序 Application_Start 方法中初始化 NServiceBus 时出现 NullReferenceException 的相关文章

  • 如何让 webpack 和 iis express 协同工作?

    I have Angular 2 和 Webpack 2 入门 https github com qdouble angular webpack2 starter它通过 webpack dev server 在节点上运行 我如何使用 web
  • 装配和产品版本不匹配

    我正在尝试在 asp net 网站中使用 Ajax 控件工具包 我从之前的一个示例项目中复制了 dll 它有以下详细信息 Assembly Version 3 5 40412 0 File Version 3 5 40412 2 Inter
  • 为什么使用 Response 设置后,Request 中的 Cookie 立即可用?

    在页面加载中 如果您立即在下一行中执行 Response Cookies Add 您可以通过 Request Cookies 访问该 cookie 我知道在幕后 cookie 是由 net 添加到 Request Cookies 中的 但原
  • ASP.NET 数据集 getdataBy 无法启用约束。一行或多行包含违反非空、唯一或外键约束的值

    你好 我有一个非常简单的网络表单 我在此表单上有一个按钮和一个网格视图 以及一个包含链接表 bill docket docket bill 等的数据集 在按钮上单击我使用以下代码 protected void button click ob
  • 本地主机和 request.Url.Authority

    我的应用程序通过 URL 中的公司标识符分隔用户 company1 app com company2 app com 我正在本地 PC 上进行测试 请求如下 company1 localhost com 但是 我的 request Url
  • 更改成员资格、角色等的默认连接字符串

    默认情况下 我的网络应用程序似乎正在使用LocalSqlServer作为用于任何应用程序服务 例如成员资格 角色 身份验证 等 的连接字符串 有什么方法可以更改默认连接字符串应该是什么 默认值是 LocalSqlServer 似乎很随意 我
  • .tostring() 保留前导零[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 转换对象
  • Web.config appSettings:复杂值

    Web config 的 appSettings 部分只能存储这样的简单字符串吗
  • 如何在日历中选择多个日期并将其显示在标签中

    假设我有日历 并且我想选择多个日期并在标签中显示 我使用了以下代码 但它无法正常工作 请更正 lblMultipleDate Text Calendar1 SelectedDates 0 ToShortDateString Label2 T
  • .NET ServiceModel.Syndicate - 更改 RSS 源的编码

    我正在尝试解决我在以下位置生成的所有 RSS 源的错误http captainobvio us http captainobvio us在 Internet Explorer 版本 8 和 9 中产生以下错误 进给代码错误 从当前切换 编码
  • DetailsView 事件“ItemUpdating”中的 OldValues 集合始终为空

    我正在使用DetailsView 但更新时 我无法获取OldValues 因为ItemUpdating 事件的DetailsViewUpdateEventArgs OldValues 始终为空 NewValues 的值正常 注意 我没有在应
  • ASP.NET MVC - 更新生产中的预编译 Razor View 文件

    我想知道以下是否可能 通过在 Visual Studio 中打开项目设置 使用我们的 MVC 应用程序预编译 Razor 视图 将应用程序部署到生产环境 然后在稍后阶段 通过覆盖生产中现有的 cshtml 文件来更新视图 而无需回收应用程序
  • 保护 ASP.NET MVC 应用程序中的 ajax 调用的安全

    我有一个基于 ASP NET MVC 的应用程序 它允许根据用户进行不同级别的访问 当前的工作方式是 当用户访问页面时 会根据数据库进行检查以确定用户拥有的权限 然后根据用户拥有的访问级别选择视图 有些用户比其他用户看到更多数据并拥有更多可
  • DbContext.SaveChangesAsync 异常处理

    当搭建新的脚手架时ApiController通过 Visual Studio 2013 中的异步操作和实体框架支持 某些方法可以包装DbContext SaveChangesAsync https msdn microsoft com en
  • 无法成功启动或连接到 MSBuild.exe 子进程。验证 MSBuild.exe

    我第一次遇到这种情况 运行构建并收到此错误 当我重建其他sln一切正常 错误 1 由于内部故障 构建意外停止 Microsoft Build Exceptions BuildAbortedException 构建已取消 无法成功启动或连接到
  • 在类库项目中使用资源.resx文件

    我在类库项目中使用了资源文件 resx 文件来存储一些错误消息 当我将 resx 文件的 构建操作 设置为 嵌入资源 并部署时 它工作正常 但我想将资源文件与dll分开 因为将来我可能需要更改resx文件中的错误消息 而无需重新编译类库项目
  • ASP.NET Web Api 的事件发布者

    我已经开始使用微服务 我需要创建一个事件发布机制 我计划使用 Amazon SQS 这个想法很简单 我将事件存储在与聚合相同的事务中的数据库中 如果用户更改他的电子邮件 事件UserChangedEmail将被存储在数据库中 我还有事件处理
  • ASP.NET MVC 防伪造令牌不安全

    在没有 ssl 的情况下向服务器发出请求时 我实际上可以看到 MVC3 框架以纯文本形式生成的验证令牌密钥 该密钥存储在名为 RequestVerificationToken Lw 的 cookie 中 在混合安全环境中 实际上可以在向非
  • 如何以编程方式设置单元格颜色 epplus?

    我想知道是否可以使用 epplus 以编程方式设置单元格颜色 我从 sql 存储过程加载数据并且运行良好 但我的用户想要 包含 年假 一词的单元格的背景颜色为浅黄色 而不是默认的白色 有没有办法做到这一点 也许通过迭代数据表 下面是哪里 p
  • 带有服务总线的 SignalR Azure 云服务

    我使用 SignalR 构建了一个简单的聊天应用程序那里有教程 http www asp net signalr overview getting started tutorial getting started with signalr

随机推荐

  • 这两种样式规则有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 CSS 子代选择器与后代选择器 那么 这里有什么区别呢 div a Styles here and div gt a Styles here 我真的不明白 space is the 后代组合器 whi
  • MySQL 拒绝参数

    好吧 我对这个简直要疯了 MySQL 对这段 SQL 很不满 INSERT INTO test table column1 column2 VALUES COURSEID COURSENAME 您的 SQL 语法有错误 检查与您的 MySQ
  • 如何通过react-navigation在react-native上使用react hooks

    这是使用 React navigation 的 App js 其上有两个屏幕 称为 HomeScreen 和 AddScreen import as React from react import NavigationContainer f
  • 如何获取任务管理器中显示的正在运行的进程的进程ID

    我正在学习 powershell 并尝试了解如何使用变量和函数 我想打印出所有正在运行的记事本实例的 PID 基本上是任务管理器中 详细信息 选项卡下的 PID 列中显示的内容 我写了以下代码 cmd param abc Write Hos
  • 如何在 Discord.js 丰富嵌入中使用本地图像?

    我有这个代码 var datos dato1 dato2 dato3 console log message author username introdujo el comando message content en message g
  • 自动提交表单 (cURL)

    我正在编写一个表单来将数据发布到贝宝 这工作正常 我创建带有隐藏字段的表单 然后有一个提交按钮将所有内容提交到贝宝 但是 当用户单击该按钮时 我想做更多事情 例如更改数据库中的购物车状态 所以 我希望能够在他们单击提交时执行一些代码 然后将
  • 脚本显示错误的解释器并且不会运行

    我通过邮件收到了一个 perl 脚本并要求运行它 我将其按原样放置在本地驱动器上 但是当我尝试运行该脚本时 它向我显示 usr bin perl M bad interpreter No such file or directory 我检查
  • GetFileTitle 的本地化版本?

    我拼命地试图猜测如何在给定该文件的路径的情况下检索照片的本地化文件名 例如 给定路径 c images jellyfish png Windows 7 资源管理器和内置图像查看器程序都显示法语 win 7 的 M duses 一词 这对于其
  • 在页面加载之间保留变量

    我试图捕获表单的提交按钮按下情况 如果表单已提交 页面将刷新并显示一些隐藏字段 我想捕获表单之前是否已提交 如果在重新加载时提交 我想取消隐藏隐藏字段 我试图使用全局变量来实现此目的 但是我无法使其正常工作 这是我尝试过的 var clic
  • 即使元素存在,Selenium 也无法找到它们

    我正在创建一个简单的 selenium 脚本来输入用户名和密码进行登录 这是我的代码 driver webdriver Chrome executable path r C Users Aspire5 Downloads chromedri
  • 在 JSF 中显示 XML

    我有一个返回格式化 XML 字符串的方法 我想以一种包装精美 可读的方式在 JSF 页面上显示这一点 我首先使用了这个解决方案 pre pre
  • 在 Python 中创建一个空列表

    在 Python 中创建新的空列表的最佳方法是什么 l or l list 我问这个有两个原因 技术原因 至于哪个更快 创建一个类会导致开销 代码可读性 哪一项是标准约定 以下是测试哪一段代码更快的方法 python mtimeit l 1
  • R:将数字列表从字符转换为数字

    我的数据框中有一列 其中每个单元格中都有一个或多个数字 如果数字很多 则用空格分隔 此外 R 将它们视为字符向量 我真的很想将它们转换为数字 如果可能的话立即将它们求和 例如 我的一个细胞可能看起来像 6 310 21 20 64 我试过了
  • 在 Java 中检查字符串是否代表整数的最佳方法是什么?

    我通常使用以下习惯用法来检查字符串是否可以转换为整数 public boolean isInteger String input try Integer parseInt input return true catch Exception
  • 如何检测浏览器何时阻止 iFrame

    在 https 网站上 我尝试将随机提交的 URL 加载到 iframe 中 从而允许用户看到嵌入在我自己的用户界面中的网站 只要远程 url 是 https 就像我自己的网站 并且远程服务器没有明确阻止自身嵌入 iframe 网站就会在
  • 通过 API 从 Instagram 照片中提取纬度/经度

    默认情况下 Instagram 会保存所有提交的照片的地理标签 然后您可以使用按位置搜索 media search 但是 当我尝试使用以下命令从特定图片中提取地理标签时 media media id 我总是得到 location null在
  • word - 突出显示搜索结果而不永久更改文档格式

    我想突出显示搜索结果 类似于单词的本机搜索正在执行的操作 换句话说 我不希望搜索操作在文档中产生副作用 例如通过更改返回的文本范围中的字体颜色 var searchResults paragraph search searchValue c
  • 根据第一个数组对多个数组进行排序

    目前我正在开发一个项目 需要对总共 6 个数组进行排序 我已经设法使用快速排序对数组进行单独排序 但是 我只是想知道是否有一种方法可以对 1 个数组进行排序并将其反映在其他数组中元素的顺序上 例如 如果我将日期数组按升序排序 我希望其他数组
  • 在 jQuery 对话框中隐藏标题栏并显示关闭按钮

    我已隐藏标题栏jQuery Dialog如下 ui dialog titlebar hide 这也隐藏了关闭按钮Dialog 但我需要显示关闭按钮Dialog 我怎样才能做到这一点 添加以下 CSS 将隐藏标题文本和样式 保留关闭按钮 se
  • 在 Web 应用程序 Application_Start 方法中初始化 NServiceBus 时出现 NullReferenceException

    我正在运行 NServiceBus 2 0 RTM 当我的 MessageModule 将 CurrentSessionContext 绑定到我的 NHibernate sessionfactory 时 我收到 NullReferenceE