L'emprunt d'identité de l'utilisateur en cours à l'aide de WindowsImpersonationContext pour accéder à un lecteur réseau

J'ai besoin d'accéder à un lecteur distant à partir d'une Application Web. Le lecteur n'est pas accessible à l'ASP.NET processus, donc je veux emprunter l'identité de l'utilisateur actuel de la demande.

J'ai vu quelques exemples de base à l'aide de WindowsImpersonationContext, et ont essayé de la suivante.

WindowsImpersonationContext impersonationContext = null;

try
{
    impersonationContext = ((WindowsIdentity)User.Identity).Impersonate();

    file.SaveAs(filePath);
}
finally
{
    if (impersonationContext != null)
    {
        impersonationContext.Undo();
    }
}

Je suis encore en train un accès refusé d'exception.

J'ai lu un peu de choses à propos de l' LogonUser, mais aussi loin que je peux dire que vous avez besoin d'un nom d'utilisateur et mot de passe pour obtenir les informations d'identification. Je ne cherche pas à vous connecter avec un autre utilisateur spécifique, juste de l'utilisateur actuel (qui doit avoir des autorisations d'accès à la banque de fichiers), donc je ne pense pas que j'ai réellement besoin de la LogonUser API.

Quelqu'un a une idée de ce que je suis absent? Si le code ci-dessus fonctionne?

Je voudrais aussi noter que, y compris

<identity impersonate="true" />

ne fonctionne pas, mais y compris les

<identity impersonate="true" userName="myName" password="myPassword" />

dans le web.config me permet de. J'ai vu un peu les gens poser des questions sur le pourquoi, mais je n'ai pas vu d'explication. Je me demande si c'est lié à mon problème.

Est le site web de l'exécution d'un Anonyme ou Windows Identité?
IIS est configuré pour utiliser la Fenêtre de l'identité. Merci

OriginalL'auteur fearofawhackplanet | 2010-10-08