Necesita personificación al acceder a la unidad de red compartida

Cuando intenté acceder al archivo de la unidad de red desde su local, está funcionando bien, pero cuando implemento el código aparece el siguiente error.

en System.IO .__ Error.WinIOError (Int32 errorCode, String maybeFullPath)

en System.IO.FileStream.Init (ruta de cadena, modo FileMode, acceso a FileAccess, derechos de Int32, uso de BooleanRights, recurso compartido de FileShare, tamaño de buffer de Int32, opciones de FileOptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)

en System.IO.FileStream..ctor (ruta de cadena, modo FileMode, acceso a FileAccess, recurso compartido de FileShare)

en System.Web.HttpResponse.WriteFile (String filename, Boolean readIntoMemory)

en System.Web.HttpResponse.WriteFile (nombre de archivo de cadena)

en Configs.gvConfigs_RowCommand (Object sender, GridViewCommandEventArgs e) en C: \ Users \ bpucha1103c \ Desktop \ CellBackHaul_Publish \ Configs.aspx.cs: línea 59 2013-02-05 13: 31: 21,412 [19] WARN System.Web.UI .Página [(null)] - Registro: System.IO.IOException: la cuenta utilizada es una cuenta de computadora. Utilice su cuenta de usuario global o cuenta de usuario local para acceder a este servidor.

¿Cómo hacer suplantación al acceder al archivo en la carpeta compartida de la red? Abajo esta mi codigo

GridViewRow rw = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
LinkButton lnkTxtFile = (LinkButton)rw.FindControl("lnkTxtFile");
string strFilename = lnkTxtFile.Text.Replace("/","\\");
System.IO.FileInfo targetFile = new System.IO.FileInfo(strFilename);
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + targetFile.Name);
Response.ContentType = "application/octet-stream";
Response.WriteFile(targetFile.FullName);
//HttpContext.Current.ApplicationInstance.CompleteRequest();
Response.End();

Aquí está mi código modificado

GridViewRow rw = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
LinkButton lnkTxtFile = (LinkButton)rw.FindControl("lnkTxtFile");
string strFilename = lnkTxtFile.Text.Replace("/", "\\");
System.IO.FileInfo targetFile = new System.IO.FileInfo(strFilename);
RunOperationAsUser(() =>
{
  //GridViewRow rw = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
  //LinkButton lnkTxtFile = (LinkButton)rw.FindControl("lnkTxtFile");
  //string strFilename = lnkTxtFile.Text.Replace("/", "\\");
  //System.IO.FileInfo targetFile = new System.IO.FileInfo(strFilename);
  Response.Clear();
  Response.AddHeader("Content-Disposition", "attachment; filename=" + targetFile.Name);
  Response.ContentType = "application/octet-stream";
  Response.WriteFile(targetFile.FullName);
  //HttpContext.Current.ApplicationInstance.CompleteRequest();
  Response.End();
}, "bpucha1103c", targetFile.DirectoryName , "White1234");

Respuestas a la pregunta(1)

Su respuesta a la pregunta