【发布时间】:2018-10-27 14:54:52
【问题描述】:
在我的项目中,如果收到新数据,我想更新我的数据表。我的项目包含一个 MVC .Net 项目、一个 Web 服务和一个 Windows 窗体应用程序。
当新的数据信息输入 winfom 应用程序时,数据发送到服务和服务更新数据库,然后调用 Web 应用程序 (mvc) 中的 SignalR hub。
在我的网络应用程序中,我可以使用 JavaScript 模型(如微软文档中的聊天客户端)在视图文件(cshtml 文件)中调用 signalR。此方法在网络应用程序中运行良好,但我不能使用从我的网络服务调用它。我还找到了一些使用某些模型的演示(例如使用 signalR 的 2 个控制台应用程序),但我无法在我的解决方案中进行转换。
这是我的中心(dataHub):
public class DataHub : Hub
{
/// <summary>
/// update software/companies live update table. data came from signal action in HomeController.
/// </summary>
/// <param name="signalFor"></param>
/// <param name="id"></param>
/// <param name="weight"></param>
/// <param name="name"></param>
/// <param name="datetime"></param>
public void UpdateSignal(string signalFor, string id, string weight, string name, string datetime)
{
Clients.All.readyforupdate(signalFor, id, weight, name, datetime);
}
}
我从一个名为 signal 的 actionResult 中调用它。
/// <summary>
/// update signals form other palces.
/// </summary>
/// <param name="signalFor">"software", "company"</param>
/// <param name="id">signal data id</param>
/// <param name="weight">signal data weight</param>
/// <param name="name">signal data name</param>
/// <param name="datetime">signal data datetime</param>
/// <returns></returns>
public ActionResult Signal(string signalFor, string gid, string weight, string name, string datetime)
{
ViewBag.signalFor = signalFor;
ViewBag.id = gid;
ViewBag.weight = weight;
ViewBag.name = name;
ViewBag.datetime = datetime;
return View();
}
我的问题是:如何在不使用 JavaScript 模型的情况下直接从 Web 服务(使用页面的 url)调用我的 signalR 集线器更新功能。
更新
谢谢。这对我有用:
public string sender()
{
var ran = new Random();
var x = new LiveUpdate
{
Id = Guid.Parse("9FEDD9FB-FE14-4BC2-B0BD-296E71ABAC26"),
Weight = ran.Next(20000, 35000),
Name = "companyName",
Datetime = DateTime.Now
};
var hubConnection = new HubConnection("http://localhost:5138/");
IHubProxy myHub = hubConnection.CreateHubProxy("DataHub");
hubConnection.Start().Wait();
myHub.Invoke("UpdateSignal",
"company",
x.Id.ToString(),
x.Weight.ToString(),
x.Name,
x.Datetime.ToShortTimeString()
);
return "send";
}
【问题讨论】:
-
使用 HttpClient 你应该能够向中心方法发布一个帖子
标签: c# asp.net-mvc model-view-controller signalr