#vue.js #asp.net-core #signalr #asp.net-core-signalr #visual-studio-2022
#vue.js #asp.сетевое ядро #сигналр #asp.net-ядро-сигналр #visual-studio-2022
Вопрос:
Я вижу много учебников и следую формату учебника, но мой проект потерпел неудачу.
пожалуйста, ознакомьтесь с моими кодами:
в vs-коде мой vue.js проект:
main.js:
import VueSignalR from '@latelier/vue-signalr' Vue.use(VueSignalR, 'https://localhost:7082/chathub')
тест.vue:
created () { this.$socket.start({ log: true // Logging is optional but very helpful during development }) }
в vs 2022: мой проект хаба:
программа.cs:
using WebApp2; var builder = WebApplication.CreateBuilder(args); builder.Services.AddSignalR(); var app = builder.Build(); app.MapGet("/", () =gt; "Hello World!"); app.UseRouting(); app.UseEndpoints(endpoints =gt; { endpoints.MapHublt;ChatHubgt;("/chathub"); }); app.Run();
хаб.cs:
using Microsoft.AspNetCore.SignalR; namespace WebApp2 { public class ChatHub : Hub { public Task SendMessage(string user, string message) { return Clients.All.SendAsync("ReceiveMessage", user, message); } } }
но результат: изображение результата
Комментарии:
1. У меня есть Vue.js v2 SPA работает с .NET 6 с использованием SingleR, но я не использую @latelier/vue-signalr: попробуйте устранить этот компонент, чтобы все заработало. Т. е. у вас меньше компонентов, поэтому легче видеть, что происходит.
2. Пожалуйста, сначала включите Cors в своем веб-приложении .net.
3. Спасибо @Jason Pan
Ответ №1:
добавьте эти коды в program.cs:
builder.Services.AddCors(options =gt; { options.AddPolicy(name: "MyPolicy", builder =gt; { builder.WithOrigins( "http://localhost:8081") .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); });
И
app.UseCors("MyPolicy");