2015-04-13 16 views
5

Ho bisogno di ebed di un browser web in un'app Wpf, ho provato con quello della toolbox ma ho riscontrato alcuni problemi e sono andato a CefSharp.CefSharp carica una pagina con accesso al browser

public MainWindow() 
{ 
InitializeComponent(); 
BrowserSettings settings = new BrowserSettings(); 
Cef.Initialize(new CefSettings());   
CefSharp.Wpf.ChromiumWebBrowser webBrowser = new CefSharp.Wpf.ChromiumWebBrowser(); 
    licence_grid.Children.Add(webBrowser); 
    webBrowser.Address = "http://myurlToLoad the page"; 
} 

Il problema si verifica quando ho utilizzato un url normale per il caricamento della pagina. Ma quando ho usato l'url che intendo utilizzare e con cui l'utente inserisce il suo utente e la sua password in un browser pop-up (voglio dire non un pop-up dal sito web). Ricevo un errore con questa pagina che richiede molto tempo per caricare e nient'altro. Qualcuno può darmi alcune tracce da seguire ... Grazie

+0

Che errore stai vedendo? Inoltre, sono disponibili alcuni progetti di esempio per aiutarti a consultare https://github.com/cefsharp/CefSharp.MinimalExample Prova a caricare la tua pagina web utilizzando l'esempio e verifica se ottieni un errore simile. È anche utile se si include la versione di 'CefSharp' come pratica generale. – amaitland

risposta

4

suona come il pop-up a cui ti riferisci è infatti il ​​sito che richiede per l'autenticazione basic.

In tal caso è necessario fornire un gestore IRequestHandler.GetAuthCredentials.

+0

sì, non ho trovato la parola giusta .... Quindi intendi che devo implementare un gestore e fare da solo la finestra del prompt, ottenere l'utente e pwd e inserire questi valori nella stringa passata dal ref nel gestore ... –

+1

Sì, in pratica fornisce all'utente la propria finestra di dialogo per acquisire nome utente e password, quindi imposta i due parametri di riferimento e restituisce true; https://github.com/cefsharp/CefSharp/blob/master/CefSharp/IRequestHandler.cs#L59 – amaitland

+0

Ok, molte grazie, vengo da MS ActiveX quindi ho bisogno di scoprire, ho trovato doc non così buono .. –

4

Poiché la domanda & risposta è molto vecchia e vorrei dare l'ultimo aggiornamento su questa soluzione, c'è una leggera modifica secondo la soluzione originale suggerita.

chiunque consumi cefsharp deve implementare la finestra di autenticazione. e le modifiche nel metodo sono

bool IRequestHandler.GetAuthCredentials(IWebBrowser browserControl, IBrowser browser, IFrame frame, bool isProxy, 
     string host, int port, string realm, string scheme, IAuthCallback callback) 
    { 
     //NOTE: If you do not wish to implement this method returning false is the default behaviour 
     // We also suggest you explicitly Dispose of the callback as it wraps an unmanaged resource. 

     // shyam - original implemenation. 
     //callback.Dispose(); 
     //return false; 

     bool handled = false; 

     // Instantiate the dialog box 
     AuthDialog dlg = new AuthDialog(host); // create new dialog with username and password field. 

     // Open the dialog box modally 
     dlg.ShowDialog(); 

     if (dlg.DialogResult == System.Windows.Forms.DialogResult.OK) 
     { 
      // The user did not cancel out of the dialog. Retrieve the username and password. 
      callback.Continue(dlg.UserName,dlg.Password); 
      handled = true; 
     } 

     return handled; 
    } 
Problemi correlati