【发布时间】:2020-01-16 16:33:50
【问题描述】:
我正在使用 SignalR,我的集线器位于名为 Hubs 的文件夹中。我需要在我的控制器上调用集线器“PostMarker()”中的方法。因此,每次发布某些内容时,SignalR 都会更新所有打开的窗口。我该怎么做?
[HttpPost]
public async Task<IActionResult> PostOcorrencias([FromBody] Ocorrencias ocorrencia, IFormFile UploadImag)
{
ocorrencia.DataOcorrencia = DateTime.Now;
//processar a fotografia
//ocorrencia.Fotografia = "(nome fotografia)";
string caminho = "";
if (UploadImag == null)
{
return BadRequest(ModelState);
}
else
{
if (UploadImag.ContentType == "imagens/jpg" ||
UploadImag.ContentType == "imagens/png")
{
string extensao = Path.GetExtension(UploadImag.FileName).ToLower();
Guid g;
g = Guid.NewGuid();
string nome = g.ToString() + extensao;
caminho = Path.Combine(environment.WebRootPath,"imagens", nome);
ocorrencia.Fotografia = nome;
// Cria o ficheiro no sistema
using (var stream = new FileStream(caminho, FileMode.Create))
{
await UploadImag.CopyToAsync(stream);
}
}
}
_context.Ocorrencias.Add(ocorrencia);
//CALL HUB METHOD PostMarker()
await _context.SaveChangesAsync();
}
return CreatedAtAction("GetOcorrencias", new { id = ocorrencia.Id }, ocorrencia);
}
这是我的中心:
public class MyHub : Hub
{
public async Task PostMarker()
{
await Clients.All.SendAsync("RedesignMap");
}
}
【问题讨论】:
-
您是否考虑过将 IHubContext
注入您的控制器? docs.microsoft.com/en-us/aspnet/core/signalr/… -
当我在我的控制器上添加这个部分时“_hubContext = hubContext;”它不识别 _hubContext。它说不能将只读字段分配给(在构造函数或变量初始化程序中除外)
-
我链接到的页面上的第一个代码 sn-p (1) 定义了只读字段,并且 (2) 在控制器的构造函数中分配了它。您是否在代码中添加了第 (2) 步?
-
在谈论这部分吗? "app.Use(async (context, next){...});"
标签: asp.net-mvc asp.net-core model-view-controller signalr