3 messaggi dal 01 settembre 2011
Salve a tutti,
ho un problema che mi sta facendo imprecare da diversi giorni. Devo fare la chiamata ad un web service (non sviluppato da me) dall'interno di un'applicazione asp.net. Nel dettaglio, deve effettuare il login ad un sistema informativo bypassando tre livelli di autenticazione in modo da velocizzare la procedura.
Dall'ambiente di sviluppo Visual Studio funziona a meraviglia (fa la chiamata, genera il file XML con una sorta di 'log' dell'avvenuto login e mi apre la schermata del sistema a cui voglio accedere).
Indovinate un po'? Quando lo eseguo direttamente su IIS non ne vuole sapere di funzionare, esegue solamente il codice che crea il file XML che infatti mi ritrovo nella cartella di servizio.
Qualche idea?
Posto di seguito il codice:

Dim svc As New ServiceClient()

svc.ClientCredentials.UserName.UserName = "psinfoprova"
svc.ClientCredentials.UserName.Password = "psinfoprova"

svc.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.PeerOrChainTrust

svc.Open()

Dim at As SaniarpApplicationType
at = ServiceReference1.SaniarpApplicationType.ModelloUnicoPre
Dim authURL As String = svc.getAuthUrl(at, TextBox1.Text)
Dim x As New System.Xml.Serialization.XmlSerializer(authURL.GetType)
Dim xws As System.Xml.XmlWriterSettings = New System.Xml.XmlWriterSettings()
xws.Indent = True
xws.OmitXmlDeclaration = True
xws.NewLineOnAttributes = True
xws.OmitXmlDeclaration = False

Dim xs As System.Xml.XmlWriter
Dim fname As String = (System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)).Replace("file:\", "") + "\" + "AIC-" + CStr(Now().Ticks()) + ".xml"
xs = System.Xml.XmlWriter.Create(fname, xws)
x.Serialize(xs, authURL)
xs.Flush()
xs.Close()

System.Diagnostics.Process.Start("notepad.exe", fname)

System.Diagnostics.Process.Start(authURL)

Grazie Saluti
Modificato da sergio65 il 22 ottobre 2014 11.12 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Sergio,

sergio65 ha scritto:

System.Diagnostics.Process.Start("notepad.exe", fname)
System.Diagnostics.Process.Start(authURL)

Se ho compreso lo scopo di queste due istruzioni, allora non possono funzionare perché vanno in esecuzione lato server. Non saranno in grado di aprirti notepad sul client.

La tua applicazione web va in esecuzione con un certo utente di Windows (in base a come è stato configurato l'application pool), che non ha fatto il login e che perciò non dispone di alcun desktop su cui aprire finestre. Come conseguenza, non ci vorrei mettere la mano sul fuoco ma penso che il notepad non ti si aprirà neanche lato server.

La soluzione è la seguente: anziché invocare Process.Start, mostra i valori delle variabili fname e authURL nella tua pagina aspx. Sarà poi l'utente ad usarli in qualche modo (es. metti in condizione l'utente di poter cliccare l'url contenuto in authURL, se lo scopo finale è fargli visitare quella pagina).

ciao,
Moreno
Modificato da BrightSoul il 23 ottobre 2014 14.16 -

Enjoy learning and just keep making

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.