Ich habe eine App geschrieben, die seit Monaten funktioniert, in den letzten Tagen habe ich den Fehler unten nur auf der installierten Version erhalten.Der Remote-Server hat einen Fehler zurückgegeben: (403) Forbidden
Wenn ich den Quellcode in VS ausführen, funktioniert alles gut. Außerdem funktioniert die .exe in den Ordnern der Bin einwandfrei. Es ist nur die installierte Version, die den Fehler erzeugt, wenn ich neu kompiliere und neu installiere, bekomme ich den gleichen Fehler.
Ich bin ein bisschen ratlos, was das verursacht und hoffte auf ein paar Hinweise. Es scheint eine WebRequest-Antwort durch IE zu sein wird nicht zurückgegeben, aber ich bin ratlos, warum es gut in VS ohne Fehler funktioniert. Gibt es neue IE Sicherheitsmaßnahmen/Richtlinien, die dies verursachen können?
Dinge, die ich habe versucht, so weit sind:
- Disabled alle Antivirus & Firewall
- Als Administrator ausführen
Die Ausnahme:
Exception: System.Windows.Markup.XamlParseException: The invocation of the constructor on type 'XApp.MainWindow' that matches the specified binding constraints threw an exception. ---> System.Net.WebException: The remote server returned an error: (403) Forbidden.
at System.Net.HttpWebRequest.GetResponse()
at XApp.HtmlRequest.getHtml(Uri uri) in J:\Path\MainWindow.xaml.cs:line 3759
at XApp.MainWindow.GetLinks() in J:\Path\MainWindow.xaml.cs:line 2454
at XApp.MainWindow..ctor() in J:\Path\MainWindow.xaml.cs:line 124
--- End of inner exception stack trace ---
at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
at System.Windows.Application.LoadBamlStreamWithSyncInfo(Stream stream, ParserContext pc)
at System.Windows.Application.LoadComponent(Uri resourceLocator, Boolean bSkipJournaledProperties)
at System.Windows.Application.DoStartup()
at System.Windows.Application.<.ctor>b__1(Object unused)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
Exception: System.Net.WebException: The remote server returned an error: (403) Forbidden.
at System.Net.HttpWebRequest.GetResponse()
at XApp.HtmlRequest.getHtml(Uri uri) in J:\Path\MainWindow.xaml.cs:line 3759
at XApp.MainWindow.GetLinks() in J:\Path\MainWindow.xaml.cs:line 2454
at XApp.MainWindow..ctor() in J:\Path\MainWindow.xaml.cs:line 124
EDIT:
Dies wird als eigenständige App installiert. Wenn ich als Administrator ausgeführt habe, habe ich den Programmordner geöffnet und führe die Exe als Administrator und nicht als Verknüpfung aus.
Der Code, der das Problem verursacht, ist dies
private void GetLinks()
{
//Navigate to front page to Set cookies
HtmlRequest htmlReq = new HtmlRequest();
OLinks = new Dictionary<string, List<string>>();
string Url = "http://www.somesite.com/somepage";
CookieContainer cookieJar = new CookieContainer();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.CookieContainer = cookieJar;
request.Accept = @"text/html, application/xhtml+xml, */*";
request.Referer = @"http://www.somesite.com/";
request.Headers.Add("Accept-Language", "en-GB");
request.UserAgent = @"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)";
request.Host = @"www.somesite.com";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
String htmlString;
using (var reader = new StreamReader(response.GetResponseStream()))
{
htmlString = reader.ReadToEnd();
}
//More Code
}
Vor allem, was ist Ihr Code? Dann, wenn ich Sie wäre, würde ich versuchen, die HTTP-Nachrichten mit Fiddler zu überwachen und funktionierende und nicht funktionierende Anfragen zu vergleichen. –
Wie starten Sie Ihre "installierte Version" - als Dienst oder ist es eine normale Konsole/Desktop-Anwendung? Sie sollten versuchen zu überprüfen, unter welchem Benutzerkontext die Anwendung ausgeführt wird. Können Sie genauer ausführen, was Sie getan haben, um Ihre Anwendung als Administrator auszuführen? Bitte geben Sie ein wenig mehr Details über Ihre Anwendungsarchitektur - welche Verbindungen hergestellt sind. Ist das ein Server oder ein Client? – Marcus