Аддалены сервер вярнуў памылку: (403) Забаронены

Я напісаў прыкладанне, якое працавала выдатна на працягу некалькіх месяцаў, на працягу апошніх некалькіх дзён я атрымліваю памылку ніжэй толькі на ўсталяваную версію.

Калі я запускаю зыходны код у VS усё працуе выдатна. Акрамя таго, .exe ў смеццевых папках працаваць нармальна. Гэта толькі ўсталяваная версія, якая генеруе памылку, калі я перасабраць і пераўсталяваць я атрымліваю тую ж памылку.

Я крыху збянтэжаны, як да таго, што прычынай гэтага і спадзяваўся на некалькі паказальнікаў. Здавалася б, адказ WebRequest праз IE не вяртаюцца, а я збянтэжаны, чаму ён выдатна працуе ў VS без якіх-небудзь памылак. Ці існуюць якія-небудзь новыя меры бяспекі IE/полісы, якія могуць прывесці да гэтага?

Рэчы, якія я спрабаваў да гэтага часу ўключаюць у сябе:

  • Disabled all AntiVirus & Firewall
  • Run as Administrator

выключэнне:

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:

Гэта усталёўваецца як асобнае прыкладанне. Калі я бег, як адміністратар, я адкрыў тэчку з праграмай і запусціць ех ад імя адміністратара, а не цэтліка.

Код, які выклікае пытанне гэтае

private void GetLinks()
{
    //Navigate to front page to Set cookies
    HtmlRequest htmlReq = new HtmlRequest();

    OLinks = new Dictionary>();

    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


 }
22
Перш за ўсё тое, што ваш код? Тады, калі б я цябе, я хацеў бы паспрабаваць кантраляваць паведамлення HTTP з дапамогай Fiddler, і параўнаць рабочыя і ня працоўныя запыты.
дададзена аўтар Steve B, крыніца
Як запусціць свой «ўсталяваную версію» - як служба або гэта рэгулярнае кансольнае дадатак/працоўны стол? Вы павінны паспрабаваць, каб пераканацца ў адпаведнасці з якім кантэкст карыстальніка запускаецца прыкладанне. Вы можаце ўдакладніць, што менавіта вы зрабілі, каб запусціць прыкладанне ад імя адміністратара? Калі ласка, падайце крыху больш падрабязна аб вашай архітэктуры прыкладання - тое, што ўсталяваныя злучэння. Ці з'яўляецца гэта сервер або кліент?
дададзена аўтар Marcus, крыніца

8 адказы

Падобна на тое, праблема заснавана на боку сервера.

Im my case I worked with paypal server and neither of suggested answers helped, but http://forums.iis.net/t/1217360.aspx?HTTP+403+Forbidden+error

<�Р> Я сутыкнуўся гэтае пытанне, і толькі што атрымаў адказ ад Paypal тэхнічнай.   Дадайце гэта зафіксуюць 403 пытання.   <�Код> HttpWebRequest REQ = (HttpWebRequest) WebRequest.Create (URL);
  <�Код> req.UserAgent = "[любыя словы, што складае больш за 5 знакаў]"; </р>
15
дададзена
.UserAgent было для мяне на сэрвэры. Я мяркую, што я павінен быў мець IIS, усталяваны забараніць запыты без агента, названага.
дададзена аўтар secretwep, крыніца
Гэта было рашэнне «Забароненая» пытанне, які я сутыкнуўся пры спробе выкарыстоўваць API GitHub. Спатрэбілася некалькі гадзін пошукаў, перш чым я наткнуўся на гэтую пасаду.
дададзена аўтар Marc Clifton, крыніца
Ditto Spotify каналы ATOM
дададзена аўтар planetClaire, крыніца

Дадайце наступны радок:

request.UseDefaultCredentials = true;

Гэта дазволіць прыкладанне выкарыстоўваць уліковыя дадзеныя карыстальніка, які ўвайшоў у сістэму карыстальніка, каб атрымаць доступ да сайта. Калі гэта вяртанне 403, відавочна, ён чакае праверкі сапраўднасці.

Гэта таксама магчыма, што вы (цяпер?) Быть_наст правяраючы проксі паміж вамі і выдаленым сайтам. У гэтым выпадку, паспрабуйце:

request.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;

Спадзяюся, што гэта дапамагае.

15
дададзена
Выбачайце за затрымку, я проста тэставанне. Ваша першая прапанова вырашыла праблему. Вялікі дзякуй!
дададзена аўтар user3357963, крыніца
Не працуе ...
дададзена аўтар Vlado Pandžić, крыніца

Яго дазвол памылка. Ваш VS верагодна, працуе з выкарыстаннем падвышанай ўліковага запісу або іншы ўліковага запісу карыстальніка, чым карыстальнік, выкарыстоўваючы усталяваную версію.

Гэта можа быць карысна, каб праверыць дазволу IIS і ўбачыць, што рахункі маюць доступ да рэсурсу вы звяртаецеся. Перакрыжаваная спасылка, што з уліковымі дадзенымі і улiкам устаноўленых версіі выкарыстоўваюцца.

2
дададзена
Ці ёсць у ўліковага запісу адміністратара дазволу на вэб-сэрвэры, атрымлівальнай запыт? Маючы на ​​ўвазе MyLocalPC \ Administrator і сервера \ Administrator ня супадаць з уліковай запісам
дададзена аўтар James, крыніца
Яны кажуць, што яны спрабавалі працуюць у якасці адміністратара.
дададзена аўтар Ash Burlaczenko, крыніца

We should access the website using the name given in the certificate.enter image description here

0
дададзена

У маім выпадку я ўспомніў, што дзірка ў брандмаўэры была створана для гэтага адрасу некаторы час таму, так што я павінен быў ўсталяваць useDefaultWebProxy = "хлусьня" на звязванне ў канфігурацыйным файле, як калі б па змаўчанні, каб выкарыстоўваць проксі-сервер, калі useDefaultWebProxy з'яўляецца ня вызначана.

0
дададзена

Гэта, верагодна, не дапаможа занадта шмат людзей, але гэта быў мой выпадак: я выкарыстаў Jira Rest АПА і выкарыстоўваў свае асабістыя дадзеныя (тыя, якія я выкарыстоўваю, каб увайсці ў Jira). Я абнавіў свой Jira пароль, але забыўся абнавіць іх у сваім кодзе. Я атрымаў памылку 403, я паспрабаваў абнавіць свой пароль у кодзе, але ўсё-ткі атрымаў памылку.

Рашэнне: Я спрабаваў увайсці ў Jira (з іх старонкі ўваходу ў сістэму), і я павінен быў увайсці ў тэкст, каб даказаць, што я не бот. Пасля гэтага я зноў паспрабаваў з кода, і яна працавала. Вынас: Сервер можа быць заблякаваны вас.

0
дададзена
    private class GoogleShortenedURLResponse
    {
        public string id { get; set; }
        public string kind { get; set; }
        public string longUrl { get; set; }
    }

    private class GoogleShortenedURLRequest
    {
        public string longUrl { get; set; }
    }

    public ActionResult Index1()
    {
        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult ShortenURL(string longurl)
    {
        string googReturnedJson = string.Empty;
        JavaScriptSerializer javascriptSerializer = new JavaScriptSerializer();

        GoogleShortenedURLRequest googSentJson = new GoogleShortenedURLRequest();
        googSentJson.longUrl = longurl;
        string jsonData = javascriptSerializer.Serialize(googSentJson);

        byte[] bytebuffer = Encoding.UTF8.GetBytes(jsonData);

        WebRequest webreq = WebRequest.Create("https://www.googleapis.com/urlshortener/v1/url");
        webreq.Method = WebRequestMethods.Http.Post;
        webreq.ContentLength = bytebuffer.Length;
        webreq.ContentType = "application/json";

        using (Stream stream = webreq.GetRequestStream())
        {
            stream.Write(bytebuffer, 0, bytebuffer.Length);
            stream.Close();
        }

        using (HttpWebResponse webresp = (HttpWebResponse)webreq.GetResponse())
        {
            using (Stream dataStream = webresp.GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(dataStream))
                {
                    googReturnedJson = reader.ReadToEnd();
                }
            }
        }

        //GoogleShortenedURLResponse googUrl = javascriptSerializer.Deserialize(googReturnedJson);

        //ViewBag.ShortenedUrl = googUrl.id;
        return View();
    }
0
дададзена
то і не давайце адказ без тлумачэння. Калі ласка, растлумачце, што вы рэкамендаваць. Гэта вялікі блок кода, які можа адказаць на гэтае пытанне, але павінен быць спалучаны з некаторымі падрабязнасцямі.
дададзена аўтар Cayce K, крыніца

асяроддзе:

request.Referer = @"http://www.somesite.com/";

і даданне печыва чым працаваў для мяне

0
дададзена