9 messaggi dal 26 marzo 2008
Ciao, ho sviluppato una libreria in C# (3.5) che accede ad un web service (AXL Cisco) per recuperare una lista di utenti. Se utilizzo la libreria da un normale eseguibile funziona tutto correttamente, se invece la chiamo da un servizio windows, il metodo che recupera i dati fallisce con il seguente messaggio:

The request failed with HTTP status 401: Unauthorized.

Per connettermi al web service utilizzo una classe proxy, generata tramite il tool wsdl.exe, l'utente e la pwd sono corretti, la connessione al server viene fatta con successo, ma al momento della chiamata al metodo, mi dà l'errore precedente. é un problema di privilegi ?

Il servizio è installato con l'utente LocalSystem, che da quello che ho capito è un utente con molti privilegi.

Dato che non conosco bene comne funzionano i servizi windows, c'è un qualche modo per aggiungere dei privilegi?
Grazie per l'aiuto !
Non è una questione di servizi windows ma solo di utente che usi. Non tutti possono uscire. Local System equivale a dire administrator, quindi se vuoi mirare i permessi, potresti usare network service. Se ti serve qualcos'altro fai un utente ad hoc, dai permessi alle cartelle che ti servono, e dai il permesso di uscire sulla rete.
Comunque dall'errore sembra che tu esci corretamente e raggiungi il servizio ma fallisce l'autenticazione. Usi quella integrata? Che utente si aspetta il servizio, uno di dominio? In questo caso puoi comunque forzare un certo utente intervenendo sulla proprietà Credentials della classe proxy

Ciao

Il mio blog
Homepage
9 messaggi dal 26 marzo 2008
Grazie della risposta, ho provato a far girare il servizio anche con utenti amministrativi ma niente. Quello che non ho fatto è dare i prmessi alle cartelle, domani ci provo (adesso il web service non è raggiungibile)...
Cmq vi posto il codice magari vi viene in mente altro.
Questo è il costruttore della classe proxy , che ho modificato seguendo le specifiche del fornitore del web service:

public AXLAPIService(string ccmIp, string user, string password)
{
System.Net.ServicePointManager.CertificatePolicy = new BruteForcePolicy();

this.Url = "https://" + ccmIp + ":8443/axl/";
this.Credentials = new System.Net.NetworkCredential(user, password);
}
utilizzo per connettermi un utente amministrativo e la connessione avviene con successo. Fallisce quando viene chiamata la seguente:

public ListUserByNameRes listUserByName([System.Xml.Serialization.XmlElementAttribute("listUserByName", Namespace="http://www.cisco.com/AXL/API/6.1")] ListUserByNameReq listUserByName1) {
object[] results = this.Invoke("listUserByName", new object[] {
listUserByName1});
return ((ListUserByNameRes)(results[0]));
}
9 messaggi dal 26 marzo 2008
Chiedo venia,  , era semplicemente una password sbagliata nel file di configurazione del servizio....differiva per una N maiuscola e non me ne ero accorta...

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
    In primo piano

    I più letti di oggi

    Media
    In evidenza
    MISC