2015-04-13 11 views
5

Ich muss einen Webbrowser in einer Wpf-App ebed, ich habe mit dem aus der Toolbox versucht, aber einige Probleme bekommen und ging zu CefSharp.CefSharp laden Sie eine Seite mit Browser-Login

Das Problem ist, wenn ich eine normale URL die Seitenladung verwendet. Aber wenn ich die URL benutze, die ich verwenden möchte und mit der der Benutzer seinen Benutzer und Passwort in einem Browser eingibt, erscheint Pop-up (ich meine kein Pop-up von der Website). Ich erhalte einen Fehler mit dieser Seite und nimm dir viel Zeit zum Laden und sonst nichts. Kann jemand mir ein paar Spuren geben zu folgen ... Dank

+0

Welchen Fehler sehen Sie? Außerdem gibt es einige Beispielprojekte, die Ihnen beim Einstieg helfen. Https://github.com/cefsharp/CefSharp.MinimalExample Versuchen Sie, Ihre Webseite mit dem Beispiel zu laden und sehen Sie, ob Sie einen ähnlichen Fehler bekommen. Es ist auch hilfreich, wenn Sie die Version von 'CefSharp' in die allgemeine Praxis aufnehmen. – amaitland

Antwort

4

Es ist wie das Popup-Sounds, Sie beziehen sich in der Tat ist die Website für basic Authentifizierung aufgefordert. In diesem Fall müssen Sie einen IRequestHandler.GetAuthCredentials Handler bereitstellen.

+0

Ja, ich habe das richtige Wort nicht gefunden .... Sie meinen also, ich muss einen Handler implementieren und das Prompt-Fenster selbst ausführen, den Benutzer und pwd holen und vthese Werte in die Zeichenkette übergeben ... –

+1

Ja, im Grunde geben Sie dem Benutzer Ihren eigenen Dialog, um Benutzernamen und Passwort zu erfassen, dann legen Sie die beiden Ref-Parameter fest und geben wahr zurück; https://github.com/cefsharp/CefSharp/blob/master/CefSharp/IRequestHandler.cs#L59 – amaitland

+0

Ok, vielen Dank, ich bin von MS ActiveX kommen so muss ich feststellen, fand ich doc nicht so gut .. –

4

Da die Frage & Antwort ist sehr alt, und ich möchte das neueste Update für diese Lösung geben, gibt es geringfügige Änderung wie Original-Lösung vorgeschlagen.

Jeder Verbraucher cefsharp muss den Authentifizierungsdialog implementieren. und Änderungen in der Methode ist

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; 
    } 
Verwandte Themen