| 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 ? |
| 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?
|
| 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. |
| 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 |
| 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 |