La suplantación en ASP.NET MVC

Tengo una aplicación web MVC en una intranet y quiero poder crear archivos en nuestro servidor FTP para enviarlos a socios externos.

El código para la suplantación utiliza WindowsImpersonationContext.

System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();

StreamWriter sw = System.IO.File.CreateText("PathOnFTPServer");
sw.Write("data");

impersonationContext.Undo();

Esto es lo que está pasando y la razón de mi pregunta:

Pre personificación

User.Identity.Name: [mis credenciales de Windows]

System.Security.Principal.WindowsIdentity.GetCurrent (). Nombre: NT AUTHORITY \ NETWORK SERVICE

Post personificación

User.Identity: [mis credenciales de Windows]

GetCurrent.Name: [mis credenciales de Windows]

Hacerse pasar por Deshacer

User.Identity: [mis credenciales de Windows]

GetCurrent.Name: NT AUTHORITY \ NETWORK SERVICE

Entonces, antes de que me haga pasar por un personaje, el usuario actual es la cuenta del sistema, pero después de la suplantación, está usando mi cuenta de dominio de Windows que tiene permiso para crear archivos de texto en el servidor FTP. El código funciona localmente mediante el servidor web de Visual Studio, pero no cuando lo implemento en IIS en nuestro servidor de prueba.

Estoy obteniendo un error de acceso denegado. ¿Cuál sería la razón del error cuando se personifica al usuario correcto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta