앱이 두 개의 스레드로 분리됩니다. 메인 웹 앱 및 비동기 이벤트 처리에 사용되는 보조 스레드. 보조 스레드는 내부에 주 앱의 완전한 URL (추가 경로 인수 포함)이 포함 된 이메일을 전송해야하는 이벤트를받습니다.ASP.NET MVC의 백그라운드 스레드에서 응용 프로그램 URL을 해결하려면 어떻게합니까?
예 : http://Server.com/App/RouteData?AdditionalArguments
물론 요청이 없으므로 백그라운드 스레드는 HttpContext.Current를 사용하여 URL을 해결할 수 없습니다. HttpRequest, HttpContext 없음 ...
ASP.NET을 (MVC를 사용하는 경우에도) URL을 작성하는 데 사용하는 대부분의 메소드가 HttpContext에 의존한다는 사실을 발견했습니다. HttpContext 또는 그 파생물을 사용하지 않고 ASP.NET에서 완전한 응용 프로그램 URL을 작성하는 방법이 있습니까?
UrlHelper.GetApplicationtUrl()
어떤 아이디어 :
내가 좋아하는 스레드 안전한 방법을 찾고 있어요? 귀하의 제안은 높이 평가됩니다.
많은 실험을 거친 끝에 이것이 최상의 솔루션이라는 것을 알았습니다. Application_Start에서 System.Web.Mvc.UrlHelper를 사용하여 응용 프로그램 URL을 찾은 다음이를 싱글 톤의 정적 변수에 할당하거나 종속성 삽입을 사용하여 생성자 인수로 전달합니다. 그러나 예측할 수없는 오류는로드 균형 조정을 위해 프록시 서버베이스 URL을받는 것과 같이이 솔루션을 사용하여 작동합니다. 대상 서버 주소 (및 프로토콜)가 항상 런타임에 결정될 수 없기 때문에 구성이 최상의 솔루션 인 것처럼 보입니다. 미리 설정하는 것이 가장 좋습니다. Thanks Shawn :) – Nautic20