Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何从ASP.NET Core上的控制器调用集线器中的方法?_Asp.net Mvc_Asp.net Core_Model View Controller_Signalr - Fatal编程技术网

Asp.net mvc 如何从ASP.NET Core上的控制器调用集线器中的方法?

Asp.net mvc 如何从ASP.NET Core上的控制器调用集线器中的方法?,asp.net-mvc,asp.net-core,model-view-controller,signalr,Asp.net Mvc,Asp.net Core,Model View Controller,Signalr,我正在使用信号器,我的集线器在一个叫做集线器的文件夹中。我需要在控制器上调用集线器“PostMarker()”中的方法。因此,每次发布内容时,信号员都会更新所有打开的窗口。我该怎么做 [HttpPost] public async Task<IActionResult> PostOcorrencias([FromBody] Ocorrencias ocorrencia, IFormFile UploadImag) { ocorrencia.Da

我正在使用信号器,我的集线器在一个叫做集线器的文件夹中。我需要在控制器上调用集线器“PostMarker()”中的方法。因此,每次发布内容时,信号员都会更新所有打开的窗口。我该怎么做

  [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);
    }

SignalR
IHubContext
提供了一种在中心实例之外向客户端发送消息的方法。上的示例提供了一个示例。使用此处的代码作为起点,您可以:

IHubContext
插入控制器,假设它名为
HomeController

public class HomeController : Controller
{
    private readonly IHubContext<MyHub> _hubContext;

    public HomeController(IHubContext<MyHub> hubContext)
    {
        _hubContext = hubContext;
    }
}

您是否考虑过将IHubContext注入控制器?当我在控制器“\u hubContext=hubContext;”上添加该部分时,它无法识别\u hubContext。它表示只读字段不能分配给(构造函数或变量初始值设定项除外)我链接到的页面上的第一个代码段(1)定义只读字段,并且(2)在控制器的构造函数中分配它。您是否已将步骤(2)添加到代码中?您是否正在讨论此部分?“app.Use(async(context,next){…});”就是这样!非常感谢。
public class HomeController : Controller
{
    private readonly IHubContext<MyHub> _hubContext;

    public HomeController(IHubContext<MyHub> hubContext)
    {
        _hubContext = hubContext;
    }
}
...
_context.Ocorrencias.Add(ocorrencia);
await _hubContext.Clients.All.SendAsync("RedesignMap");
await _context.SaveChangesAsync();
...