HttpContext.Actuel.Serveur null
J'ai un service windows qui est à l'aide d'une méthode à partir d'une bibliothèque de classe avec le même asp.net solution. dans la bibliothèque de la classe, j'ai une méthode avec la ligne suivante:
reader = XmlReader.Create(HttpContext.Current.Server
.MapPath("~/TestDevice/Data.xml"), settings);
Lorsque le contrôle de la ligne. Je reçois exception. J'ai essayé de déboguer le code et constaté que lorsque le service de la tente d'accéder à cette méthode, puis HttpContext.Current.Server
est null
. Quelle est la syntaxe alternative.
J'ai essayé d'accéder à cette bibliothèque de classe de la méthode d'application web et il fonctionne très bien.
S'il vous plaît suggérer une solution.
Faites-vous le multithreading?
non, je ne fais pas le multithreading
Voir stackoverflow.com/a/944267/37055
non, je ne fais pas le multithreading
Voir stackoverflow.com/a/944267/37055
OriginalL'auteur DotnetSparrow | 2011-06-10
Vous devez vous connecter pour publier un commentaire.
HttpContext.Le courant est de retourner la valeur null, car votre Service Windows ne s'exécute pas sous l'égide de IIS ou quelque autre serveur web provder.
Cependant, vous pouvez trouver l'exécution de chemin d'accès de votre service à l'aide de la réflexion:
^ doit retourner le chemin de l'organe d'exécution du service..
Donc, ce que vous dites, c'est que vous voulez que le service pour connaître l'emplacement d'un fichier de données situé en vertu d'une application web. Problème avec ça, c'est l'application web pourrait obtenir déplacé. Si vous souhaitez à la fois un service et une application web pour être en mesure d'avoir accès au même endroit, alors vous pourriez vouloir définir l'emplacement du chemin d'accès dans un fichier de config pour chaque application, les deux pointant vers le même lieu, et de stocker vos données dans cet endroit au lieu de sous le site web de l'arborescence de dossiers.
OriginalL'auteur The Evil Greebo
Il se pourrait que lorsque vous utilisez windows service, vous n'êtes plus en cours d'exécution d'une application web, donc HttpContext et le serveur web n'est pas disponible. Essayez d'utiliser le Système.IO.Fichier de mappage, de voir si cela vous prend pour le bon répertoire.
Modifier
Vous ne donnez pas de chemin d'accès physique. Tout ce que vous avez à faire est de spécifier le nom du répertoire, qui sera en résidence à la racine de votre DLL.
Système.IO.fichier est de donner à l'erreur. Quelle est la syntaxe exacte ?
renvoie "C:\\TestDevice\\Data.xml" au lieu de la véritable chemin d'accès au répertoire
Yep, j'ai un répertoire sur un disque C qui est associé à un répertoire virtuel. - Je télécharger des fichiers dans ce répertoire. L'Alternative est bien sûr à utiliser la réflexion sur les assemblages.
OriginalL'auteur
Cette méthode fonctionne beaucoup mieux:
OriginalL'auteur Lucia Minerba