5

Estoy desarrollando una aplicación MVC2 y utilizando la autenticación de formularios en ella.Mi aplicación ASP.NET MVC2 con autenticación de formularios está bloqueando el acceso incluso a imágenes, estilos y secuencias de comandos

Los scripts, las imágenes y los estilos están todos bloqueados para los usuarios no registrados y, en consecuencia, la página de inicio de sesión se ve horrible.

Funciona bien local, el problema es cuando publico en el servidor.

¿Alguien tiene alguna idea ¿POR QUÉ ???

PS: El servidor IIS es la versión 7.5

Mi Web.config:

<configuration> 
    <system.web> 
    <globalization culture="pt-BR" uiCulture="pt-BR" /> 
    <httpRuntime requestValidationMode="2.0"/> 
    <customErrors mode="Off" /> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </assemblies> 
    </compilation> 

    <pages> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="Admin.Models" /> 
     </namespaces> 
    </pages> 

    <authentication mode="Forms"> 
     <forms name="AGAuth" loginUrl="~/Home/Login" timeout="120" /> 
    </authentication> 
    </system.web> 

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

    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

    <connectionStrings> 
     <add name="DBContainer" connectionString="metadata=res://*/Database.DB.csdl|res://*/Database.DB.ssdl|res://*/Database.DB.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=thewebserver.com,5158;Initial Catalog=thedatabase;Persist Security Info=True;User ID=theuser;Password=thepassword;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

</configuration> 

Respuesta

3

que tenían exactamente el mismo problema.

La causa resultó ser la configuración de autenticación de IIS. Al habilitar la Autenticación anónima (y habilitar la Autenticación de formularios y deshabilitar la Autenticación de Windows), los scripts, los estilos y las imágenes fueron accesibles cuando se desconectó.

+0

¡Gracias, hombre! ¡Funcionó! –

+3

Tuve el mismo problema y ya tenía habilitada la Autenticación anónima ... para que funcione Tengo que cambiar la identidad del usuario anónimo (haga clic con el botón derecho en "Autenticación anónima" -> Editar) en "Identidad del grupo de aplicaciones" ya que esa es la Había dado acceso a mi código. – Trev

+0

Trev - lo mismo aquí – chaiwalla

0

Ésta es una puñalada en la oscuridad completa pero ¿cuáles son los derechos sobre las carpetas de imágenes y css? Si están configurados para que solo las personas autorizadas puedan acceder a ellos, entonces usted tiene un problema. Puede intentar establecer los derechos en esas carpetas para todos, o para el usuario predeterminado .net y ver lo que obtienes.

+0

Pero cuando inicio sesión todo funciona bien. Si intenta acceder a '/ Content/Styles/redmond/jquery-ui-1.8.4.custom.css', se le redirigirá a la página de inicio de sesión. Eso significa que está poniendo todo bajo autenticación, incluso imágenes y estilos –

+0

que es exactamente correcto. Creo que necesita eliminar los derechos en las imágenes y las carpetas css para que cualquiera pueda verlas aunque no haya iniciado sesión. Una vez que haya iniciado sesión, se han cumplido los derechos de la carpeta y, por lo tanto, puede verlos – griegs

+0

¿Y cómo puedo hacer eso? –

1

Eche un vistazo a la documentación del location element. Creo que el primer ejemplo te dará lo que necesitas.

Por conveniencia, aquí está el ejemplo mencionado:

<configuration> 
    <location path="Logon.aspx"> 
     <system.web> 
     <authorization> 
      <allow users="?"/> 
     </authorization> 
     </system.web> 
    </location> 
</configuration> 
+0

Probé eso. No funcionó:/ –

+0

En los ejemplos aquí (http://support.microsoft.com/kb/316871) utilizan ... –

+0

Probé de ambas formas. Nada. –

0

¿Copiaste accidental o crear un archivo Web.config en la carpeta de contenido que tiene un elemento <authorization> que se pueden negar el acceso?

+0

Sin Web.config en ninguna de las carpetas internas –

4

Agregue un web.config a las carpetas de scripts, imágenes y estilos que le indiquen a asp.net que permita el acceso a todos los usuarios (asegúrese de que no tiene nada allí donde no desee que los usuarios anónimos tengan acceso a):

<configuration> 
     <system.web> 
     <authorization> 
      <allow users="*"/> 
     </authorization> 
     </system.web> 
</configuration> 

cuanto a la razón, la siguiente está diciendo IIS para permitir que el proceso asp.net todas las solicitudes:

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

intenté eso también. No funciona =/ –

+0

k, entonces es muy probable que los permisos del sistema de archivos/respuesta de greigs – eglasius

+1

esto lo arregló para mí, gracias! – Despertar

1

El grupo IIS_WPG necesita acceso de lectura a la tapa. Ahora funciona bien ...espero que esto ayude a alguien más

2

Puede establecer permisos para carpetas requeridas así:

<location path="App_Themes"> 
    <system.web> 
     <authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
    </location> 
    <location path="images"> 
    <system.web> 
     <authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
    </location> 
    <system.web> 
1

Puede establecer el permiso a las carpetas requeridas como esto

<location path="App_Themes"> 
<system.web> 
    <authorization> 
    <allow users="*"/> 
    </authorization> 
</system.web> 

0

tuve el mismo problema y yo probamos lo que sugirió a Scott H, pero no funcionó ...

Resulta que el usuario asignado a la autenticación anónima se establece en IUSR (botón derecho del ratón 'autenticación anónima' - > Editar), que no tuvo acceso a mi código. Le había dado acceso a la identidad del grupo de aplicaciones, así que seleccioné esa opción, hice clic en 'Aceptar' y funcionó el bingo.

Cuestiones relacionadas