Nous travaillons sur un service Web qui doit exécuter un processus tiers qui interagit avec un lecteur réseau mappé. Nous devons donc mapper ce lecteur par programme depuis le service Web.C# - Mapper un lecteur réseau à partir du service Web
Je l'ai déjà enveloppé WNetAddConnection2, etc., dans une plus belle classe pour un autre projet, donc je jeté le bon code dans.
Notre service web fonctionne UltiDev Cassini (au lieu de IIS) qui fonctionne sous la Compte système Nous obtenons le code d'erreur pour: "le nom du périphérique spécifié est invalide" à chaque fois. J'ai également essayé d'usurper l'identité d'autres utilisateurs dans le fichier web.config, avec les mêmes résultats.
Le lecteur mappera très bien lorsque j'exécuter mon code à partir d'un programme de console sous un compte utilisateur normal.
J'ai également essayé d'exécuter la commande "net use" équivalente de C# avec exactement les mêmes résultats que WNetAddConnection.
Est-ce que quelqu'un sait pourquoi un service Windows ou un utilisateur du système ne serait pas en mesure de mapper des lecteurs réseau?
Est-ce que quelqu'un sait une solution de contournement? Le simple mappage du lecteur au démarrage du système serait une solution, mais comment le système/l'utilisateur emprunté pourrait-il y accéder?
Link pour Cassini UltiDev: UltiDev
SOLUTION: je me mis à l'ouverture de session sous Administrateur et tout fonctionne le service Cassini UltiDev. L'emprunt d'identité ASP .Net ne doit pas fonctionner comme prévu.
Alors pourquoi l'usurpation d'identité web.config ne fonctionne-t-elle pas? J'ai imprimé Environment.Username dans notre journal, et il imprime l'administrateur, mais si je regarde le processus d'UltiDev - il est toujours sous le système local. UltiDev pourrait-il faire quelque chose d'étrange? – jonathanpeppers
Le compte Système local dispose d'un accès réseau, mais il présente des informations d'identification anonymes aux ressources réseau. – bryanbcook