【问题标题】:SignalR not working after deploy on azure.Works on localhost在 azure 上部署后 SignalR 无法正常工作。在 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 并获取实用程序来设置用户变量。

标签: c# sql-server asp.net-mvc azure signalr


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-09
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    相关资源
    最近更新 更多