在 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 应用程序无法呈现,但在本地服务器上工作正常