Mesaj de eroare 401.2.: neautorizat: Logon eșuat din cauza configurației serverului. Când aplicația a fost implementată (Programare, Asp.Net)

user1240615 a intrebat.

Am o aplicație asp.net 4.0 care funcționează bine în cassini, dar când o implementez în IIS primesc eroarea de mai sus. Aplicația rulează în cadrul grupului Default App pool pe care o serie de alte aplicații îl folosesc și funcționează bine. Aici este o copie a configurației mele web care poate fi sursa:

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <connectionStrings>
    <add name="FMLconnect" connectionString="Server=192.168.20.125;Port=;Database=FML;Uid=******;Pwd=*****;pooling=false;" providerName="MySql.Data.MySqlClient"  />
  </connectionStrings>

  <system.web>
    <httpHandlers>
      <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
      <add path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler" verb="*" validate="false"/>
      <add path="Telerik.Web.UI.SpellCheckHandler.axd" type="Telerik.Web.UI.SpellCheckHandler" verb="*" validate="false"/>
      <add path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler" verb="*" validate="false"/>
      <add path="Telerik.RadUploadProgressHandler.ashx" type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" validate="false"/>
      <add path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" validate="false"/>
      <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>
      <add type="Telerik.ReportViewer.WebForms.HttpHandler, Telerik.ReportViewer.WebForms, Version=5.1.11.928, Culture=neutral, PublicKeyToken=a9d7983dfcc261be" path="Telerik.ReportViewer.axd" verb="*" validate="true"/>
    </httpHandlers>
    <compilation debug="true" targetFramework="4.0" >
      <assemblies>
        <add assembly="Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <!--<add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>-->
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </assemblies>
    </compilation>




  </system.web>

  <system.webServer>
       <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
</configuration>

15 răspunsuri
imjohnking

Cu IIS, acest lucru sună într-adevăr doar ca și cum ar trebui să verificați setările de autentificare pentru aplicația dvs. în IIS Admin. Încercați acest link: http://support.microsoft.com/kb/253667

Acesta este pentru IIS6, nu ai menționat dacă folosești IIS 6 sau 7. Pentru IIS 7, încercați acest lucru: http://support.microsoft.com/kb/942043

Comentarii

  • Este IIS 7. Am văzut articolele de asistență mai devreme, dar nu a contat. –  > Por user1240615.
  • În cazul meu, Windows Authentication nu a fost instalat în mod implicit cu IIS 7. –  > Por roadsunknown.
  • Mulțumesc imjohnking, din anumite motive, nici la mine nu era instalat Windows Authentication. Pașii de rezolvare pe support.microsoft.com/kb/942043 m-au ajutat să îmi fac aplicația să funcționeze. –  > Por hatsrumandcode.
  • Link-urile sunt moarte acum. –  > Por Spencer.
JoshYates1980

Dacă lucrați cu IIS Express, verificați web.config

        <!--  AUTHENTICATION 
      This section sets the authentication policies of the application. Possible modes are "Windows", 
      "Forms", "Passport" and "None"
-->
    <authentication mode="Windows"/>
    <identity impersonate="true"/>
    <!--  AUTHORIZATION 
      This section sets the authorization policies of the application. You can allow or deny access
      to application resources by user or role. Wildcards: "*" mean everyone, "?" means anonymous 
      (unauthenticated) users.
-->
    <!--<authorization>
        <deny users="?"/>-->
        <!-- Allow all users -->
        <!--  <allow     users="[comma separated list of users]"
                         roles="[comma separated list of roles]"/>
              <deny      users="[comma separated list of users]"
                         roles="[comma separated list of roles]"/>
        -->
    <!--</authorization>-->

Jay

Am actualizat un proiect VS2012 la 2013 și am schimbat proprietatea Proiect din Autentificare Windows de la Activat la Dezactivat, iar apoi am primit această eroare. Modificarea simplă a rezolvat problema. Mergeți la soluție și faceți clic pe proprietăți pentru a schimba acest lucru.

Dacă folosiți IISExpress, liniile ar trebui să arate ceva de genul:

<IISExpressAnonymousAuthentication>disabled</IISExpressAnonymousAuthentication>
<IISExpressWindowsAuthentication>enabled</IISExpressWindowsAuthentication>

Blake

Am avut aceeași problemă chiar acum. Niciuna dintre soluțiile pe care le-am găsit nu a funcționat, așa că voi posta aici în caz că ajută pe cineva.

Pentru mine problema a fost rezolvată în felul următor:

  • Deschideți managerul IIS
  • Selectați „Application Pools”
  • Faceți clic dreapta pe pool-ul de aplicații pe care îl utilizați și selectați „Setări avansate”
  • Setați „Enable 32-Bit Applications” (Activează aplicațiile de 32 de biți) la „True” (Adevărat)
  • Faceți clic pe „OK” pentru a închide caseta de dialog
  • Faceți din nou clic dreapta pe pool-ul de aplicații și selectați „Recycle” (Reciclare)

Sper că va ajuta pe altcineva! Acest lucru mă înnebunea.

Comentarii

  • Avem această problemă pe un anumit server, dar nu și pe altele. Setarea Enable 32bit „rezolvă” problema, dar nu știu de ce (încă – încă sper să găsesc o soluție care să aibă sens pentru mine). Mulțumesc pentru pont, cel puțin acum este funcțional! –  > Por Jono Job.
  • Acest lucru mă scotea din minți și activarea 32 de biți a făcut ca site-ul să funcționeze din nou, dar nu am nicio idee de ce. Cred că s-a întâmplat brusc după ce am șters folderele bin și obj din proiectul de prezentare, dar nu știu dacă a fost așa. Frustrant. –  > Por kentrh.
  • Mulțumesc, domnule, am încercat multe alte răspunsuri la diferite întrebări și asta a rezolvat problema –  > Por John.
JohnLBevan

Încercați acest lucru:

  • Deschideți IIS Manager
  • Faceți clic pe serverul dvs. web (adică pe serverul în sine; nu pe un site) în bara de conexiuni.
  • Selectați Autentificare din secțiunea IIS.
  • Activați protocoalele după cum este necesar. Orice lucru dezactivat aici nu va fi disponibil pentru site-urile găzduite pe acest server; orice lucru activat aici va utiliza setările site-ului individual.
  • Reporniți IIS (start, , run, , cmd (rulați ca administrator), iisreset -noforce)

Michael Gervasoni

Acest întotdeauna se întâmplă cu proiectul nostru după ce este reîncărcat.

Dacă utilizați Autentificarea Windows, problema ar putea fi la fel de simplă ca și actualizarea proprietăților proiectului la Activați Autentificarea Windows.

În Visual Studio, ajungeți la proprietățile proiectului dvs. (de obicei, fac clic dreapta pe un fișier > proprietăți pentru a deschide fereastra de proprietăți. Apoi faceți clic pe proiectul meu). Asigurați-vă că Autentificarea Windows este setată la Activat

Moslem Ben Dhaou

Acesta ar putea fi un răspuns foarte târziu, dar problema în cazul meu a fost un profil de publicare configurat greșit (Folosind Web Deploy). De îndată ce am deselectat opțiunea Precompile during publishing opțiune (mai jos) și am publicat din nou, a revenit la normal și am putut să o accesez.

Am încercat, de asemenea, să o activez/dezactivez de câteva ori și asta a confirmat că acesta era singurul motiv. Problema a apărut când am activat-o din nou și a dispărut când am debifat-o.

Și ca să fiu sincer, încă nu am o explicație despre ce impact are exact această opțiune și de ce este cauza unei astfel de probleme. Am găsit această întrebare, dar încă mai investighez.

Codac

În cazul meu, a trebuit să schimb setările din panoul „Properties” pentru a rezolva această problemă. Selectați proiectul și apăsați F4 (meniu: View->Properties Window) și setați proprietățile în mod corespunzător.

Visual Studio 2015 – Captură de ecran din panoul Properties

Sper că acest lucru vă ajută!

live-love

Dacă utilizați Autentificare Windows, ar putea fi vorba de setările de autorizare. Deschideți fișierul web.config:

  <system.web>
    <authentication mode="Windows"></authentication>
    <identity impersonate="false" />
    <authorization>
        <allow roles="domain_name1group_name1,domain_name2group_name2" />
      <deny users="*" />
    </authorization>

Asigurați-vă că ați atribuit rolurile corecte. Dacă trebuie să includeți toți utilizatorii, utilizați:

<allow users="*" />

Chris Porter

Am rezolvat erorile de autentificare 401.1 și 401.2 adăugând BackConnectionHostNames în registru folosind aceste indicații: https://support.microsoft.com/en-us/help/896861/you-receive-error-401-1-when-you-browse-a-web-site-that-uses-integrate (Metoda 1)

  1. Faceți clic pe Start, faceți clic pe Run, tastați regedit, apoi faceți clic pe OK.
  2. În Registry Editor, localizați și apoi faceți clic pe următoarea cheie de registru:
  3. HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaMSV1_0
  4. Faceți clic dreapta pe MSV1_0, indicați New (Nou), apoi faceți clic pe Multi-String Value (Valoare cu mai multe șiruri).
  5. Tastați BackConnectionHostNames, apoi apăsați ENTER.
  6. Faceți clic dreapta pe BackConnectionHostNames, apoi faceți clic pe Modify.
  7. În caseta de date Value (Valoare), introduceți numele de gazdă sau numele de gazdă pentru site-urile care se află pe calculatorul local, apoi faceți clic pe OK.
  8. Ieșiți din Registry Editor, apoi reporniți serviciul IISAdmin.

Aceste erori se produceau pe o instalare Windows 10 Professional care rulează versiunea 1803, pe un domeniu care este numit diferit de site-ul la care încercam să mă autentific.

Frostrar

Am avut o problemă similară și am rezolvat-o prin setarea optimizeCollections la false în web.config și imediat revenind asupra modificării după ce am verificat că a funcționat.

  <system.web>
    ..
    <compilation debug="true" targetFramework="4.7.1" optimizeCompilations="false" />
    ..
  </system.web>

Poate că același lucru ar fi putut fi obținut prin ștergerea dosarului temporar asp.net…

John Mills

Am primit și eu această eroare încercând să execut un program existent ASP.NET WebForms sub IIS Express (dar probabil că acest lucru se aplică și la IIS).

Aplicația a fost configurată în fișierul applicationhost.config pentru a utiliza Clr4IntegratedAppPool pool de aplicații. Modificarea applicationPool la Clr4ClassicAppPool a rezolvat problema pentru mine.

husky

ceea ce m-a ajutat pe mine a fost să comentez liniile de mai jos din web.config

<system.web>
    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5" />
    <!--  
    <authentication mode="Windows" /> 
    <authorization>
        <deny users="?" />
    </authorization>
    <identity impersonate="false" />
    -->
    <customErrors mode="Off" />
</system.web>

Sajithd

Dacă este o aplicație bazată pe autentificare Windows, atunci activați autentificarea Windows pentru site-ul dvs. în IIS și dezactivați autentificarea anonimă.

Mohika

Am avut aceeași eroare, în care aplicația rulează bine la nivel local, dar dă eroare Unauthorized atunci când rulează din IIS. Am încercat mai multe metode, dar nu am avut noroc. în cele din urmă am folosit metoda de mai jos:

Am folosit Autentificarea anonimă, care nu a putut funcționa corect deoarece nu a putut găsi calea către fișierele de cod. Prin urmare, am setat Autentificarea Windows la True și VOILA! a funcționat.

Puteți găsi Windows Authentication făcând clic pe numele aplicației dvs. în panoul din stânga – Select Authentication – Windows Authentication (setat la Enabled).

De asemenea, dacă nu puteți găsi Windows Authentication aici, trebuie să o selectați din Control Panel – Program featutes – Turn windows fetures on or off – IIS – World wide web services – Security- Windows authentication (bifați-o). acum mergeți la IIS și o veți găsi.

Tags: