Mon application envoie des e-mails, et les chemins d'image référencés dans les e-mails doivent varier en fonction de la façon dont l'utilisateur a accédé à la page qui envoie l'e-mail. J'ai utilisé des variations du code avant plusieurs fois sans problème, mais c'est la première fois que je suis en train de le faire dans une application MVC:ASP.NET MVC - HttpRequestWrapper.Url est null?
var relImagePath = controllerContext.HttpContext.Response.ApplyAppPathModifier("~/Emails/Images");
var absImagePath = new Uri(controllerContext.HttpContext.Request.Url, relImagePath).AbsoluteUri;
La deuxième ligne est de lancer un NullReferenceException parce HttpContext. Request.Url est nul. Comment cela peut-il être?
Modifier: Je dois noter que je cours ce code dans un fil de discussion thread pool séparé de celui qui a traité la demande. Si je déplace ce code sur le thread exécutant l'action du contrôleur, l'URL est là. Pour l'instant, j'ai recouru à l'exécution du code sur le même thread.
Je suppose que vous avez raison sur le moment où le HttpContext est obtenu. Je vais regarder dans ça. Cependant, je voulais aussi commenter l'article que vous avez lié pour dire que je suis fortement en désaccord avec son «sentiment général». L'utilisation du pool de threads pour des tâches longues peut être un moyen sûr de ralentir la file d'attente de travail ASP.NET, mais pour de nombreuses tâches de type "fire and forget" de courte durée, le pool de threads est l'outil parfait et crée un nombre illimité d'autres discussions n'est presque jamais une bonne idée. – Chris