Accedere a una condivisione di rete da un app asp.net. Lavori in Visual Studio, ma non in IIS, perché?

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

  •  27-10-2019
  •  | 
  •  

Domanda

Ho una condivisione di rete nella intranet che consente l'accesso in scrittura a tutti (guest)

Così, ho scritto un programma (modulo mojoPortal, in ogni caso è la stessa, credo) in C # che scrive alcuni file in quel percorso, e in Visual Studio funziona alla grande.

Ora, utilizzando lo stesso programma in IIS 7.5, non funziona, ottengo questa eccezione:

System.Net.WebException: eccezione An verificato durante una richiesta WebClient. ---> System.IO.IOException - errore di accesso: nome utente sconosciuto o password.

Beh ... in quanto l'accesso alla condivisione SMB è concesso a tutti, non capisco perché non funziona su IIS ...

Il codice è questo:

WebClient wc = new WebClient();
wc.DownloadFile(urltodownload, smbshare);

Cosa può essere? Grazie

È stato utile?

Soluzione

Il servizio IIS non è stato concesso di condivisione di file di accesso di default. Si potrebbe provare a eseguire il sito con set piscina app identità per Sistema Locale , o controllare manualmente l'identità con cui il codice viene eseguito da web.config:

<system.web>
  <identity impersonate="true" userName="user with correct rights or admin" password="password"/>
  ...

Altri suggerimenti

Hai provato impostando le credenziali?

Io credo che il gruppo Everyone richiede ancora una credenziale valida di qualche tipo, senza impostare le credenziali sono anonimi ...

wc.Credentials = CredentialCache.DefaultCredentials;

Sembra che il suo non è un problema con l'accesso alla condivisione SMB, il suo un problema di accesso al sito memorizzato in urltodownload. Come Richard ha detto, si consiglia di utilizzare le credenziali di default cioè wc.UseDefaultCredentials = true; o qualche specifico gruppo di credenziali o impostare il sito web all'indirizzo urltodownload per accettare connessioni anonime.

Fare riferimento a ciò che può causare WebException per il metodo DownloadFile @ MSDN .

È necessario un qualche tipo di credenziali da utilizzare una quota da asp.net. È possibile impostare una rappresentazione sul web.config o set wc.Credentials utilizzando le credenziali di rete. Nel web.config si dovrebbe impostare la follwoing nella sezione system.web:

<identity impersonate="true" userName="username_here" password="password_here" />

Per la mia applicazione Visual Studio (WinForms), si trattava di un semplice atto di creazione di una chiave con nome sicuro (SNK) per l'applicazione da utilizzare.

Non so perché.

Forse la creazione di uno SNK in Visual Studio ha un modo di impostare queste credenziali che gli altri autori sopra di me si riferiscono.

Spero che questo aiuti.

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