WPF에 SignalR 서버 구동시키기(.NET 7.0)
2024. 4. 22. 14:58ㆍ카테고리 없음
살다보니 이런것도 해봐야 하는구나..
1. 일단 WPF 프로젝트 생성 (.NET 7.0으로 생성)
2. Nuget Package 아래 2개를 설치한다.(버전이 안 맞네???-_-;)
3. App.xmal.cs 파일에 다음과 같이 작업한다
private IHost webHost;
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
webHost = Host.CreateDefaultBuilder()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseUrls("http://*:5000;http://localhost:5001;https://hostname:5002");
})
.Build();
webHost.Start();
}
protected override void OnExit(ExitEventArgs e)
{
webHost?.Dispose();
base.OnExit(e);
}
다음의 파일도 포함되어 있지않다면 포함시켜준다
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
4. 프로젝트에 Startup.cs파일을 추가해준다.
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Agent
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSignalR();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapDefaultControllerRoute();
endpoints.MapHub<CommandHub>("/chathub");
});
}
}
}
3. CommandHub 클래스도 추가해준다.
using Microsoft.AspNetCore.SignalR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Agent.Hubs
{
public class CommandHub : Hub
{
public override async Task OnConnectedAsync()
{
await base.OnConnectedAsync();
}
}
}
4. 초기 구동 시 다음과 같은 창이 나타났을 때, 허용을 선택한다.