IIs 部署websocket 之后握手失败,Net Core 发布之后websocket 连接不上

今天写着个博客是为了大家早点跳出这个坑。我写的websocket 使用的是net core 2.2写的,一开始的时候报错说握手失败,直到后来看到别的大神说,初始化websocket的时候一定要在app.UseMvc之前执行,否则会被mvc 拦截,走不了自己实现的websocket请求处理,贴代码!

  #region 1.0 配置WebSocket 服务

    private void ConfigWebSocket(IApplicationBuilder app) {

        // Apis.mobile.MobileWebSocketHandle.AddWebSocket(app);

        WebSocketOptions options = new WebSocketOptions();
        options.KeepAliveInterval = TimeSpan.FromSeconds(120);
        options.ReceiveBufferSize = 4 * 1024;
        //options.AllowedOrigins.Add("http://127.0.0.1:8848");
        app.UseWebSockets(options);
        HandleWebSocket handle = new HandleWebSocket();
        app.Use(async (context, next) => {
            if (context.Request.Path != "/WebSocketService") {
                await next();
                return;
            }
            if (!context.WebSockets.IsWebSocketRequest) {
                await next();
                return;
            }
            WebSocket socket = await context.WebSockets.AcceptWebSocketAsync();
            await handle.AcceptAsync(context, socket);
        });
    } 

    #endregion

配置的地方单独写了一个方法,需要在配置的地方setup的【ConfigureProduction/ConfigureDevelopment】或者【Configure】方法中调用,直接传过来app对象就可以了,使用的时候 其中的handleWebSocket类就不贴出来了,有需要的留言,handle类中主要工作就是处理浏览器端发来的请求。

一切工作就绪之后就是部署到IIS上了,我用的服务器是2012 据说需要从2008开始才支持websocket,用2012妥妥的,部署的具体方法可以去看net core部署在IIS上的文章,网上一堆,下面说下需要注意的地方,在安装IIS的时候一定要把这个【websocket协议】勾上。

在这里插入图片描述

到此websocket就可以连接上了。

转载自 wittdong

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值