2011-07-14 13 views
7

Tengo un sitio web ASP.NET (.NET 4) que utiliza http PUT para un controlador genérico .ashx. La llamada PUT tiene su origen en una interfaz de Silverlight. Todo funciona en VS 2010 en mi máquina local (servidor web Cassini).Habilitación de PUT en IIS 7.5 para un controlador ASHX con Autenticación de Windows

Luego implementé en un cuadro IIS7.5 Win Server 2008 R2.

Silverlight/sitio web está bien, pero las llamadas PUT al controlador .ashx se encuentran con un aviso de inicio de sesión de Windows.
Esta es una intranet local, por lo que la autenticación de Windows (con NTLM & Negociar proveedores) es la única autenticación habilitada.

luego leí esto: http://blogs.msdn.com/b/joseph_fultz/archive/2009/07/23/enabling-the-put-verb-with-handlers-and-iis-7-0.aspx

He seguido su sugerencia y ahora puedo realizar llamadas a través de mi manejador PUT .ashx. El problema es que solo las personas en el grupo de administradores del servidor web pueden hacer esto. Nadie más puede. Se encuentran con el prompt de inicio de sesión de Windows.

¿Alguna idea de lo que podría ser esto?

No puedo dar a Todos los privilegios de administrador de la compañía en el servidor web. Sin duda cortarían una de mis manos, comerían esa mano frente a mí y luego me mostrarían la puerta.

Respuesta

10

Ok lo descubrí.

Éstos son los elementos clave de configuración en IIS 7.5:

  1. En Autenticación de Windows/Proveedores - NTLM tenía que estar en la cima de Negociar
  2. usuarios del dominio sea necesario el acceso de escritura al directorio que contiene el manejador ashx
  3. Autorización de URL no habilitada como función en el servidor web. He añadido y luego pegado esto en el web.config bajo system.webServer:

    <security> 
        <authorization> 
         <remove users="*" roles="" verbs="" /> 
         <add accessType="Allow" users="*" verbs="GET,HEAD,POST,PUT,DELETE,DEBUG" /> 
        </authorization> 
    </security> 
    

(voy a MIC que un poco, pero por ahora es que funciona)

todo mi sistema El elemento .webServer es el siguiente:

<system.webServer> 
    <modules> 
     <remove name="WebDAVModule" /> 
    </modules> 
    <defaultDocument> 
     <files> 
      <clear /> 
      <add value="default.aspx" /> 
     </files> 
    </defaultDocument> 
    <handlers accessPolicy="Read, Write, Execute, Script"> 
     <remove name="WebDAV" /> 
     <remove name="SimpleHandlerFactory-Integrated-4.0" /> 
     <remove name="SimpleHandlerFactory-Integrated" /> 
     <add name="SimpleHandlerFactory-Integrated" path="*.ashx" verb="GET,HEAD,POST,DEBUG,PUT" type="System.Web.UI.SimpleHandlerFactory" resourceType="Unspecified" requireAccess="Write" preCondition="integratedMode" /> 
     <add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG,PUT" type="System.Web.UI.SimpleHandlerFactory" resourceType="Unspecified" requireAccess="Write" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    <security> 
     <authorization> 
      <remove users="*" roles="" verbs="" /> 
      <add accessType="Allow" users="*" verbs="GET,HEAD,POST,PUT,DELETE,DEBUG" /> 
     </authorization> 
    </security> 

</system.webServer> 

Eso lo hizo.

+0

Cualquier solución para la aplicación .net 3.5 –

Cuestiones relacionadas