首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们能否在ASP.NETCORE应用程序中托管ASP.NET SignalR v2.4.1?

我们能否在ASP.NETCORE应用程序中托管ASP.NET SignalR v2.4.1?
EN

Stack Overflow用户
提问于 2020-02-28 01:14:31
回答 1查看 225关注 0票数 1

我的代码库目前停留在.Net 4.7.2中,但我需要在基于Asp.Core 2.2的网站上推送一些通知。

在整个系统中,我们使用SignalR 2.4.1,但它在.Net核心中完全重写。

我尝试在同一个应用程序中托管它,但没有成功。欧文似乎并不高兴。

有没有人用它取得了一些成功,或者有什么建议?

必须有一种方法让项目从.Net迁移到核心。谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-02-28 18:41:34

好的,经过漫长的一夜,我得到了这个问题的解决方案。

首先我要把我的设置弄清楚。有一个以.Net 4.7.2为目标的应用程序接口项目,它通过SignalR 2.4.1集线器广播一些消息。还有一些其他的Asp.Net 4.7.2项目正在使用这些集线器,它们工作得很好。此外,在.Net核心中还有一个新的网站构建,但目标是4.7.2框架。

我最终得到的解决方案实际上是在AspCore管道中托管一个OWIN管道。

首先,我需要安装以下软件包:

  • Microsoft.Owin
  • Microsoft.AspNetCore.Owin

我还为核心IApplicationBuilder接口添加了一个新的扩展方法,它在同一管道上设置OWIN:

代码语言:javascript
复制
    public static class OwinExtensions
    {
        public static IApplicationBuilder UseOwinApp(this IApplicationBuilder app, Action<IAppBuilder> configuration)
        {
            return app.UseOwin(setup => setup(next =>
            {
                IAppBuilder owinApp = new AppBuilder();

                var aspNetCoreLifetime = (IApplicationLifetime)app.ApplicationServices.GetService(typeof(IApplicationLifetime));

                var owinAppProperties = new AppProperties(owinApp.Properties)
                {
                    OnAppDisposing = aspNetCoreLifetime?.ApplicationStopping ?? CancellationToken.None,
                    DefaultApp = next
                };

                configuration(owinApp);

                return owinApp.Build<Func<IDictionary<string, object>, Task>>();
            }));
        }
    }

然后,在核心项目的启动类中,在配置方法中,我能够使用我的扩展并将SignalR集线器注册到它,如下所示:

Startup.cs

代码语言:javascript
复制
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {

            ...

            app.UseOwinApp(owinApp =>
            {
                owinApp.MapSignalR();
            });

            ...
}

这样,无论出于什么原因,如果需要,我们都可以向OWIN管道中添加更多中间件。

我希望这能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60438549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档