problema di autorizzazione quando webservice distribuito come directory virtuale. Lavori in VS IDE

StackOverflow https://stackoverflow.com/questions/2721163

Domanda

Ho un servizio Web ASP.NET che creerà un file di testo in un percorso che viene passato come parametro al metodo.

 private void CreateFile(string path)
 {
        string strFileName = path;
        StreamWriter sw = new StreamWriter(strFileName, true);
        sw.WriteLine("");
        sw.Write("Created at " + DateTime.Now.ToString());
        sw.Close();
 }

Ora sto passando una cartella in rete come il parametro e chiamando il metodo

  CreateFile(@"\\192.168.0.40\\labels\\test.txt");

Quando si esegue il codice dallo studio IDE di Visual, il file viene sempre creato nel percorso. Ma quando ho pubblicato questo e distribuiti come una directory virtuale, mi sta lanciando qualche errore come

   "System.UnauthorizedAccessException: Access to the path '\\192.168.0.40\labels\test.txt' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at System.IO.StreamWriter.CreateFile(String path, Boolean append)
   at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
   at System.IO.StreamWriter..ctor(String path, Boolean append)

Ho <identity impersonate="true"/> nel mio web.config. La mia macchina è in esecuzione in XP e l'altro è in Windows Server 2003. Non ho il permesso di scrittura impostato su "Chiunque" per quella cartella.

È stato utile?

Soluzione

L'applicazione web è in esecuzione con l'account utente ASPNET locale, che non ha accesso alla risorsa in rete. Se si dispone di pool di applicazioni in vostra versione di IIS, si deve fare l'utente pool di applicazioni un utente di dominio che ha accesso alla risorsa di rete. Se non si dispone di pool di applicazioni, è cambiare l'utente per il web nel processmodel elemento del web.config.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top