Tôi đã viết một ứng dụng hoạt động tốt trong nhiều tháng, trong vài ngày qua tôi đã nhận được lỗi bên dưới chỉ trên phiên bản đã cài đặt.Máy chủ từ xa trả lại lỗi: (403) Bị cấm
Nếu tôi chạy mã nguồn trong VS, mọi thứ hoạt động tốt. Ngoài ra, .exe trong các thư mục bin hoạt động tốt. Nó chỉ là phiên bản cài đặt mà tạo ra các lỗi, nếu tôi biên dịch lại và cài đặt lại tôi nhận được cùng một lỗi.
Tôi hơi bối rối về những gì gây ra điều này và hy vọng một vài gợi ý. Nó có vẻ là một phản ứng WebRequest thông qua IE không được trả lại nhưng tôi stumped là tại sao nó hoạt động tốt trong VS mà không có bất kỳ lỗi nào. Có bất kỳ biện pháp/chính sách bảo mật mới nào của IE có thể gây ra điều này không?
Những điều tôi đã cố gắng cho đến nay bao gồm:
- Disabled tất cả AntiVirus & Firewall
- Run as Administrator
Các Ngoại lệ:
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:
Cài đặt này được cài đặt dưới dạng ứng dụng độc lập. Khi tôi chạy với tư cách Quản trị viên, tôi đã mở thư mục chương trình và chạy exe với tư cách quản trị viên thay vì phím tắt.
Mã gây ra vấn đề là này
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
}
Trước hết mã của bạn là gì? Sau đó, nếu tôi là bạn, tôi sẽ cố gắng theo dõi các tin nhắn HTTP bằng cách sử dụng Fiddler, và so sánh các yêu cầu làm việc và không hoạt động. –
Làm thế nào để bạn chạy "phiên bản đã cài đặt" của mình - với tư cách là một Dịch vụ hoặc nó là một ứng dụng bàn điều khiển/máy tính để bàn thông thường? Bạn nên cố gắng xác minh theo ngữ cảnh của người dùng mà ứng dụng đang chạy. Bạn có thể xây dựng chính xác những gì bạn đã làm để chạy ứng dụng của mình với tư cách là Quản trị viên không? Vui lòng cung cấp thêm một chút chi tiết về kiến trúc ứng dụng của bạn - những kết nối nào được thiết lập. Đây có phải là máy chủ hoặc ứng dụng khách không? – Marcus