Ich habe eine Anwendung mvc 3 mit einem Hintergrund Thread überprüft den Zustand einiger Datenbankelemente. Wenn es ein abgelaufenes Objekt findet, sendet es eine E-Mail. In der E-Mail möchte ich die URL für die anzurufende Aktion einfügen, um den Status zu sehen. Wenn diese von einem Controller geschehen würde ich den UrlHelper verwenden, zB:Generieren einer URL unabhängig von Controllern in ASP.NET MVC 3
string body_url = "For more details see: " + Url.Action("Details", "MyOrder", new { OrderId = order.OrderId }, Constants.HttpProtocol);
Aber ich bin nicht in einem Controller, noch ist meine Methode von einem Controller bezeichnet wird, wird es beim Start der Anwendung gestartet. Gibt es eine Möglichkeit, einen gültigen UrlHelper zu generieren, oder, wenn nicht, eine gültige URL zu generieren, ohne auf Festcodierungswege zurückzugreifen, wenn unabhängig von den Controllern?
Es scheint eine Schande, hart-Code, die Basis-URL, um es vor allem angesichts kann sich ändern, je nachdem, ob ich Test oder Produktion betreibe. Ich hätte gehofft, dass es eine Möglichkeit gäbe, die Basis-URL aus der App zu holen. –
Sie können die HttpContext.Current-Informationen in Ihren Hintergrund-Thread übergeben, wenn Sie es hochfahren. Achten Sie darauf, nur den Basis-URL-Teil davon zu verwenden! http://stackoverflow.com/questions/3398717/asp-net-get-websites-url-without-httpcontext-current-running-in-background-t – felickz
'HttpContext.Current' ist nicht verfügbar beim Start der Anwendung, die ist, wenn @SimonParker in der Lage sein soll, eine Routen-URL zu generieren. –