如何从外部应用程序(不使用SignalR)启动SignalR集线器
我有一个Asp.Net MVC 4应用程序(应用程序A),它将使用SignalR实时更新用户。由于我们正在使用旧的.net框架版本,因此我使用SignalR版本1.1.4。如何从外部应用程序(不使用SignalR)启动SignalR集线器
有一个外部应用程序(应用程序B),当提交订单时,我想通知应用程序A发送订单通知。
我最初的想法是要么创建一个ASP.NET Web服务来承载SignalR,而是因为应用程序B不会使用SignalR我认为只是调用应用程序A的控制器来传递必要的数据将适用于什么需要。
因此,从应用程序B,我将如何调用应用程序A的控制器来传递必要的数据? Ajax可以用来打电话给外部应用程序吗?如果是这样,控制器方法会是什么样子?
这些都是具有Windows身份验证的Intranet应用程序。
我的身影,只是在打电话给应用程序的控制器A 通过必要的数据将用于工作所需要的
可以使用HttpClient在应用程序B调用中的应用的控制器行动A.
创建订单和发送的顺序到另一个MVC应用控制器(未测试)实施例。
private HttpClient client = new HttpClient();
public HomeController()
{
client.BaseAddress = new Uri("http://localhost:49277");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
}
[HttpPost]
public ActionResult Insert(Order order)
{
HttpResponseMessage response = client.PostAsJsonAsync<Order>("/Order/Post" + $"/{order.OrderID}", order).Result;
return RedirectToAction("Index");
}
编辑
您可以使用 - UseDefaultCrendentials或直接通过credentials。
using (var handler = new HttpClientHandler {UseDefaultCredentials = true})
{
using (var client = new HttpClient(handler))
{
...
}
}
OR
var credentials = new NetworkCredential(userName, password);
using (var handler = new HttpClientHandler {Credentials = credentials })
{
using (var client = new HttpClient(handler))
{
...
}
}
完美,谢谢。发生这种情况时,这将使用用户的Windows帐户进行身份验证是否正确?这是一个Intranet应用程序,用户最初使用Windows身份验证进行身份验证。 – eaglei22
我编辑了我的答案。 –
如果我只想传递一个字符串,是否还有什么不同?在这里使用“https://weblog.west-wind.com/posts/2012/Mar/21/ASPNET-Web-API-and-Simple-Value-Parameters-from-Posted-data”作为参考我试过[ FromBody]方法的调用,并且还传递了字符串,我一直得到null。 – eaglei22
听起来像是你需要一个消息队列(任何一种都行)。 –
@MattJohnson,谢谢马特。这对我来说有点学习曲线,所以我会尝试William的第一个。但是谢谢你向我介绍这个话题,因为这绝对是展望未来的一些东西。 – eaglei22