在 azure 上部署后 SignalR 无法正常工作。在 localhost 上工作

Posted

技术标签:

【中文标题】在 azure 上部署后 SignalR 无法正常工作。在 localhost 上工作【英文标题】:SignalR not working after deploy on azure.Works on localhost 【发布时间】:2021-03-25 23:52:08 【问题描述】:

所以如果在部署后出现此错误。当我在本地主机上运行时,位于 localhost/Home/Chat 上的聊天页面可以正常打开,但是当我尝试打开 azurewebsites.net 时,我得到状态代码 500

  app.UseEndpoints(
                endpoints =>
                
                    endpoints.MapHub<SignalRChatHub>("/chat");
                    endpoints.MapControllerRoute("areaRoute", "area:exists/controller=Home/action=Index/id?");
                    endpoints.MapControllerRoute("default", "controller=Home/action=Index/id?");
                    endpoints.MapRazorPages();
                    ); 

这些是我在启动时的端点。

这就是视图中的JS

<script>
        var connection =
            new signalR.HubConnectionBuilder()
                .withUrl("https://myurl.azurewebsites.net/Home/Chat")
                .build();
        connection.on("NewMessage",
            function (message) 
                var chatInfo = `<div  style="color:black;text-align:center;font-size: 25px">$message.user says :  $escapehtml(message.text)</div>`;
                $("#messagesList").append(chatInfo);
            );

我用我的网址替换了 WithUrl(我没有在这里发布它,因为它还没有准备好 :D)但仍然没有

那是我的家庭控制器

 public IActionResult Chat()
        
            return this.View();
        

我怀疑它与连接字符串有关,即从数据库获取默认连接,而不是从 Azure 数据库获取默认连接。但是不知道怎么解决...

【问题讨论】:

您提供的图片中的错误消息非常清楚导致问题的原因。部署时需要设置环境变量。 环境变量设置为生产。我不明白下一步该怎么做 从 cmd.exe 使用 >Set 将提供所有环境变量和值。从 Windows 中的开始按钮键入 ENVIRON 并获取实用程序来设置用户变量。 【参考方案1】:

好的,开始吧!第一个问题是 azure 中的环境变量设置为生产,这就是为什么错误看起来改变了 Azure、AppService、配置、应用程序设置中的 ASPNETCORE_ENVIRONMENT。从生产到开发并得到更方便的错误。错误是它找不到视图。我在它搜索的文件夹中有视图,但它没有工作。修复方法是右键单击视图并将构建操作更改为内容。这解决了我的问题。

【讨论】:

以上是关于在 azure 上部署后 SignalR 无法正常工作。在 localhost 上工作的主要内容,如果未能解决你的问题,请参考以下文章

.NET Core Web API 在部署到 Azure 后无法正常工作

使用 cors、express 和 google api 的 Node.js 服务器应用程序在 Azure 部署后无法正常工作

使用数据库连接将代码部署到 Azure Web 时,Flask 应用程序无法呈现,但在本地服务器上工作正常

React App 部署到 Azure 应用服务后失败

Azure 移动服务 Web Api 上的 SignalR CORS

在 SQL Azure 上部署数据层项目 - 部署前和部署后使用主数据库