gpt4 book ai didi

asp.net-core - 如果在虚拟目录中发布,Asp.Net Core signalR 不工作

转载 作者:行者123 更新时间:2023-12-04 14:23:44 26 4
gpt4 key购买 nike

我在 asp.net core 中开发了一个应用程序并使用了 signalR。当我在根目录中发布它时它工作正常,但如果我在虚拟目录中发布它就不起作用。我的 signalR 集线器始终指向根目录。

Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// ... other middleware ...
app.UseSignalR(routes =>
{
routes.MapHub<ChatHub>("/chat");
});
}

我已经在客户端像这样初始化了它,

chat.js

var connection = new signalR.HubConnection("/chat");

在虚拟目录(/development/chatapp/source)中发布后,它指向这样的, http://localhost:100/chat?userId=1

但实际上它必须像这样指向,这样它才能工作 http://localhost:100/development/chatapp/source/chat?userId=1

我已经使用了 asp.net core 2.0 和这个 signalR 版本(1.0.0-preview1-final)。

请有人建议我解决这个问题。

最佳答案

在我 friend 的帮助下,我找到了这个问题的根本原因并修复了它。实际上 javascript 不知道应用程序是托管在根文件夹还是子文件夹(在虚拟目录中)。它始终指向根文件夹。

所以当我们像这样在js中初始化它时(new signalR.HubConnection("/chat")),它指向根目录如下,

http://localhost:100/chat?userId=1

由于 javascript 不知道 IIS 托管,我们需要从 c# 中告知相对路径。所以我在 Controller 中得到我的应用程序的基本路径,

ViewData["PathBase"] = Request.PathBase.ToString();

如果它有一些值,我就把它放在“/chat”前面,否则我就把它初始化为“/chat”。

var connection = new signalR.HubConnection("/development/chatapp/source/chat");

这解决了我的问题:-)

关于asp.net-core - 如果在虚拟目录中发布,Asp.Net Core signalR 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50344818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com