Logo UGIdotNET

Discussione 'Eseguire applicazioni con utenza NT Authority'

# Pubblicato il 25 mag 2010 17.12 - Rispondi
Ciro Verde
Eseguire applicazioni con utenza NT Authority
Buonasera, ho scritto un'applicazione in C# che invia un file ( con la POST) ad un URL usando il protocollo HTTPS.
L'applicazione funziona correttamente con utenze del dominio di rete e va in errore ( Time-out) sulla connessione Https se viene eseguita con credenziali <NT AUTHORITY\SYSTEM>.

Suggerimenti ?
Soluzioni ?

# Pubblicato il 25 mag 2010 18.26 - Rispondi
Roberto Messora
Re: Eseguire applicazioni con utenza NT Authority
Domanda banale: non sapendo quello che fa l'applicazione, hai per caso verificato se il file che mandi poi viene salvato da qualche parte e nel caso dell'utenza che non funziona, non hai i diritti di scrittura su disco?
# Pubblicato il 26 mag 2010 9.53 - Rispondi
Ciro Verde
Re: Eseguire applicazioni con utenza NT Authority
Grazie per la risposta; allora dettaglio meglio il problema.

Viene sollevata un'eccezione nel momento in cui istanzio la richiesta POST su Https.

L'eccezione viene sollevata solo se l'exe è eseguito con le credenziali NT Authority/System.

questo è il frammento di codice in cui si verifica l'errore


HttpWebRequest RicHttp = null;
HttpWebResponse Risp;
Uri indirizzo = /* un valido indirizzo URI */

#region //Configurazione della connessione - blocco TRY
try
{
// Crea l'oggetto 'NetworkCredential'.
NetworkCredential Permesso = new NetworkCredential(//utenza del dominio abilitata ad istanze Internet);

//configura il Proxy
string[] Servers = new string[1];
string StrProxy = "//configura il proxy";
WebProxy Pro = new WebProxy(StrProxy , true, Servers, Permesso);

// definisce l'interfaccia proxy per accedere all'URL
GlobalProxySelection.Select = Pro;
IWebProxy Iproxy = GlobalProxySelection.Select;

ServicePointManager.DefaultConnectionLimit = ServicePointManager.DefaultPersistentConnectionLimit;
ServicePoint sp = ServicePointManager.FindServicePoint (indirizzo, Iproxy);
sp.MaxIdleTime = 5000;

}//FINE TRY
#endregion
#region // Blocco catch
catch(WebException err)
{
//cattura le eccezioni eventuali
}
#endregion

//inizio dell'invio del file
StreamReader InputFile = null;
Stream st = null;
Int32 ciclo = 1;
tentativi = 0;
Int32 MAX_BUFF = DimPacchetto ,ByteInviati = 0;
char[] Buff = new char[MAX_BUFF];
Byte[] BB = null;
try { // Invio del file
InputFile = new StreamReader(Nomefile);

do
{
int ContaChar = InputFile.Read(Buff,0,MAX_BUFF);//legge una fetta del file dei PB
//BB = Encoding.UTF8.GetBytes(Buff,0,ContaChar);//flusso da inviare
BB = Encoding.ASCII.GetBytes(Buff,0,ContaChar);//flusso da inviare
while(true)
{
#region // Setup della richiesta
RicHttp = (HttpWebRequest) WebRequest.Create( indirizzo );
RicHttp.Method = "POST";
RicHttp.Proxy = GlobalProxySelection.Select ;
RicHttp.ContentType = "application/x-www-form-urlencoded";
RicHttp.ContentLength = prova.Length ;
RicHttp.Timeout = 15000;
RicHttp.ServicePoint.MaxIdleTime = 5000;

#endregion
st = RicHttp.GetRequestStream();


Su quest'ultima istruzione si solleva l'eccezione.
# Pubblicato il 26 mag 2010 12.13 - Rispondi
Roberto Messora
Re: Eseguire applicazioni con utenza NT Authority
Ok,
tipo di eccezione? stack trace?
li puoi postare?
tieni presente che System è un'utenza molto particolare di windows, mi domando fra l'altro perchè tu la stia usando per connetterti ad internet
# Pubblicato il 26 mag 2010 16.43 - Rispondi
Ciro Verde
Re: Eseguire applicazioni con utenza NT Authority
Ok,
tipo di eccezione? stack trace?

L'eccezione sollevata è il time-out sulla richiesta HTTPS; non c'è stacktrace

tieni presente che System è un'utenza molto particolare di windows, mi domando fra l'altro perchè tu la stia usando per connetterti ad internet

In verità x uscire su Internet uso un'utenza di dominio.

<NT Authority\System> l'ho utilizzata per lanciare l'exe.

All'interno dell'exe però faccio uso delle Network Credentials.

Comunque credo che il bug sia dovuto alle nuove impostazioni aziendali combinate con l'ambiente di sviluppo utilizzato x l'exe ( Visual Studio 2003).

Ho provato ad eseguire un programmino scritto sempre in C# ma da Visual Studio 2005 e sembra che non ci siano malfunzionamenti.

Quindi effettuerò il porting dell'applicazione su VS2005.

;-)

Grazie x l'aiuto

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185