我创建了一个简单的C#控制台应用程序(net7.0)作为多人纸牌游戏的服务器,它使用 * HttpRequest * 接收连接请求,然后升级到WebSocket连接。
// Start listening for websocket requests
public async void Start()
{
HttpListener listener = new();
listener.Prefixes.Add("http://+:80/cardgame/");
listener.Start();
#if DEBUG
Console.WriteLine("Listening...");
#endif
while (true)
{
HttpListenerContext listenerContext = await listener.GetContextAsync();
if (listenerContext.Request.IsWebSocketRequest)
{
ProcessRequest(listenerContext);
}
else
{
listenerContext.Response.StatusCode = 400;
listenerContext.Response.Close();
}
}
}
字符串
这适用于我的windows笔记本电脑,当运行应用程序作为管理员或使用netsh add urlacl url=http://+:80/cardgame user=DOMAIN\user
在CMD事先.
我想使用“免费”设置将此作为Web应用托管在Azure Cloud中。部署已成功,但启动Web应用时,由于HTTP错误,它会引发拒绝访问异常。确切情况:Image
Unhandled exception. System.Net.HttpListenerException (5): Access is denied.
at System.Net.HttpListener.SetupV2Config()
at System.Net.HttpListener.Start()
型
我还尝试了listener.Prefixes.Add("http://+:80/");
和网络应用程序的公共IP在'+'符号的地方,但无济于事。
Azure Kudu环境不会在管理模式下运行应用程序,但它也不允许配置netsh
命令,所以我觉得这是不可能的.
如果有人能帮我解决这个问题,我会非常感激
- 有没有一种方法可以使用C#控制台应用程序在Azure Webapp环境中配置WebSocket连接?
- 还有什么其他的解决方案可以让我以这种方式在云中托管我的服务器(最好是免费的)?
1条答案
按热度按时间o4tp2gmn1#
不可以,无法使用C#控制台应用程序在Azure Web App环境中配置WebSocket连接。
我们可以将ASP.NET、ASP.NET Core Web API、ASP.NET Core Blazor和ASP.NET MVC Web应用部署到Azure App Service。
在Blazor中使用Azure Web PubSub服务:
字符串
本地:
的数据
的
Azure:
对于Azure SignalR和Blazor:
我在Blazor中遵循了Azure SignalR的configuration参考
dotnet add package Microsoft.Azure.SignalR
Startup.cs
型
appsetting.json:
型
本地:
的
Azure:
型