확인을 할 수있는 한 가지 방법을 : 당신이 외부에서 허브로 호출되기 때문에 당신은 at the bottom of the documentation here을 표시 기술을 사용해야합니다.
내가 처음에 이해하지 못한 점은 mvc 컨트롤러에서 해당 코드를 사용해야한다는 것입니다. 일단 그렇게했으면 다른 위치 나 응용 프로그램에서도 컨트롤러를 호출 할 수 있습니다. WebRequest 클래스입니다.
@Hightechrider 완벽을 기하기 위해 코드 조각을 만들기 위해 2 개의 참조를 추가해야합니다. 이 데모 코드는 PersistentConnection을 사용하여 수행되지만 허브의 원칙은 물론 같습니다.
EDIT : sqldependency를 관리하기 위해 asp.net mvc에서 스레드를 사용하고 있습니다.이 솔루션은 좀 더 통합 된 솔루션이라고 느낍니다. 확인 asp.net에서 http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SignalR.Infrastructure;
using SignalR.Hosting.AspNet;
using SignalR;
namespace SignalRDemo.Controllers
{
public class DemoController : Controller
{
public void sendMessage(string message)
{
IConnectionManager connectionManager = AspNetHost.DependencyResolver.Resolve<IConnectionManager>();
IConnection connection = connectionManager.GetConnection<MyConnection>();
connection.Broadcast(message);
}
}
}
왜 SQL Dependency를 별도의 프로세스로 모니터링해야합니까? 웹 사이트에서 데이터베이스를 직접 모니터링 할 수없는 몇 가지 인프라 스트럭처 이유가 없으면 ASP.NET에서 실행되는 스레드에서 모니터링 할 수 있습니다. 어떤 경우이든 새로운 ASP.NET 웹 API를 사용하는 것이 더 낫다면 API를 HttpPost로만 설정하여 우연한 (또는 악의적 인) 호출을 막을 수 있습니다. 웹 페이지. –
답장을 보내 주신 @Hightechrider thx, 악의적 인 사용을 막기 위해 인증을 구현할 계획 이었지만 게시글을 사용하는 것이 좋습니다. 내 asp.net mvc 응용 프로그램 내에서 별도의 스레드를 시작하는 방법을 모르겠습니다, 어떤 시점에서 스레드를 시작해야합니다 (나는 글로벌 asax, Application_start 생각하고 있지만 확실하지 않습니다) –
예, 시작 Global.asax는 일반적입니다. 물론 AppPool은 유휴 상태 일 때 종료 될 수 있습니다 (서비스를 필요로하는 이유입니다).하지만 귀하의 경우 아무도 사이트를 사용하지 않으면 (SignalR 또는 기타를 통해) 데이터베이스가 업데이트되는지 상관하지 않습니다. –