Almacenes de símbolos HTTP
Mediante el uso del protocolo SRV admitido a través de symsrv.dll (incluido con el depurador), se puede acceder al almacén de símbolos mediante HTTP (en lugar de solo UNC/SMB).
HTTP se usa normalmente en lugar de SMB cuando un firewall no permite SMB entre el cliente y el servidor. Los entornos de producción y laboratorio son buenos ejemplos de esto.
Un servidor de símbolos HTTP no puede ser un almacén de bajada en una cadena de ruta de acceso de símbolos debido a su naturaleza de solo lectura. El proxy del servidor de símbolos (filtro ISAPI) funciona en torno a este límite. SymProxy descarga los archivos que faltan en el sistema de archivos del servidor mediante almacenes de símbolos ascendentes preconfigurados. El filtro descarga el archivo en el sistema de archivos, lo que permite a IIS descargar el archivo al cliente, restaurando así el concepto de encadenamiento de almacén de símbolos. Para obtener más información, consulte SymProxy.
La configuración de IIS como almacén de símbolos es relativamente fácil, ya que los archivos de símbolos solo se sirven como archivos estáticos. La única opción no predeterminada es la configuración de los tipos MIME para permitir la descarga de los archivos de símbolos como secuencias binarias. Esto se puede hacer mediante un carácter comodín "*" aplicado al directorio virtual de la carpeta de símbolos.
Para que un almacén de símbolos sea accesible a través de Internet, debe configurar los directorios que contienen los archivos de símbolos e Internet Information Services (IIS).
Nota Debido a la forma en que IIS se configurará para servir archivos de símbolos, no se recomienda que se use la misma instancia de servidor para cualquier otro propósito. Normalmente, la configuración de seguridad deseada para un servidor de símbolos no tendrá sentido para otros usos, por ejemplo, para un servidor comercial orientado al exterior. Asegúrese de que la configuración de ejemplo que se describe aquí tiene sentido para su entorno y adáptela según corresponda para sus necesidades específicas.
Creación del directorio de símbolos
Para comenzar, seleccione el directorio que usará como almacén de símbolos. En nuestros ejemplos, llamamos a este directorio c:\symstore y el nombre del servidor en la red es \SymMachineName.
Para obtener más información sobre cómo rellenar el almacén de símbolos, consulte SymStore y Árbol de carpetas del almacén de símbolos.
Configuración de IIS
Internet Information Services (IIS) debe configurarse para servir los símbolos mediante la creación de un directorio virtual y la configuración de tipos MIME. Una vez hecho esto, se puede elegir el método de autenticación.
Para crear un directorio virtual
Abra el Administrador de Internet Information Services (IIS).
Acceda a Sitios web.
Haga clic con el botón derecho en Sitio web predeterminado o el nombre del sitio que se usa y seleccione Agregar directorio virtual...
Escriba Símbolos en Alias y haga clic en Siguiente.
Para facilitar la administración, se recomienda usar el mismo nombre para la carpeta, el recurso compartido y el directorio virtual.
En Ruta de acceso, escriba c:\SymStore y haga clic en Siguiente.
Haga clic en Aceptar para finalizar la adición del directorio virtual.
Realice el proceso de configuración del subdirectorio una vez para el servidor. Tenga en cuenta que se trata de una configuración global y afectará a las aplicaciones que no se hospedan en la carpeta raíz de un sitio.
Configuración del subdirectorio
Acceda a [Equipo].
Abra el Editor de configuración.
Acceda ApplicationHost/sites del sistema.
Expanda virtualDirectoryDefaults.
Establezca allowSubDirConfig en False.
Realice este proceso una vez para el servidor. Tenga en cuenta que se trata de una configuración global y afectará a las aplicaciones que no se hospedan en la carpeta raíz de un sitio.
También puede hacer que los archivos de símbolos se puedan examinar
Vaya a [Equipo] | Sitios | [Sitio web] | Símbolos.
Haga doble clic en Exploración de directorios en el panel central.
Haga clic en Habilitar en el panel derecho.
El tipo MIME para el contenido descargado debe establecerse en application/octet-stream para permitir que IIS entregue todos los archivos de símbolos.
Configuración de tipos MIME
Haga clic con el botón derecho en el directorio virtual Símbolos y elija Propiedades.
Seleccione Encabezados HTTP.
Haga clic en Tipos MIME.
Haga clic en Nueva.
En Extensión, escriba *.
En Tipo MIME, escriba application/octet-stream.
Para salir del cuadro de diálogo Tipos MIME, haga clic en Aceptar.
Para salir de Propiedades de símbolos, haga clic en Aceptar.
Puede editar el archivo web.config para configurar tipos MIME para símbolos. Este enfoque borra los tipos MIME heredados y agrega un tipo MIME de tarjeta comodín * catch-all. Este enfoque puede ser necesario cuando se heredan tipos MIME en determinadas configuraciones de IIS.
Uso de web.config para configurar tipos MIME
Edite el archivo web.config como se muestra aquí.
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <directoryBrowse enabled="true" /> <staticContent> <clear /> <mimeMap fileExtension=".*" mimeType="application/octet-stream" /> </staticContent> </system.webServer> </configuration>
Reinicie IIS.
IIS ya está listo para servir archivos de símbolos de todos los tipos del almacén de símbolos.
Configuración de la autenticación
Es posible configurar IIS para que use "Autenticación integrada de Windows" para que los clientes (windbg.exe por ejemplo) puedan autenticarse automáticamente en IIS sin pedir al usuario final las credenciales.
Nota Solo configure la autenticación de Windows en IIS para controlar el acceso al servidor de símbolos si es adecuado para su entorno. Hay otras opciones de seguridad disponibles para controlar aún más el acceso a IIS si es necesario para su entorno.
Para configurar el método de autenticación como Anónimo
Inicie el Administrador de Internet Information Services (IIS).
Vaya a [Equipo] | Sitios | [Sitio web] | Símbolos.
Haga doble clic en Autenticación en el panel central.
En Autenticación y control de acceso, haga clic en Editar.
Haga clic con el botón derecho en Autenticación de Windows y, a continuación seleccione Habilitar.
Para todos los demás proveedores de autenticación, haga clic con el botón derecho en cada proveedor y seleccione Deshabilitar.
Haga clic en Aceptar para finalizar la configuración de la autenticación.
Si la autenticación de Windows no aparece, use Activar y desactivar las características de Windows para habilitar la característica. La ubicación de la característica es diferente en cada versión de Windows. En Windows 8.1/Windows 2012 R2, se encuentra en Internet Information Services | Servicios World Wide Web | Seguridad.
Deshabilitación de la compatibilidad con Kerberos
SymSrv.dll no admite la autenticación Kerberos al conectarse a IIS. Por lo tanto, la autenticación Kerberos debe estar deshabilitada en IIS y NTLM debe establecerse como el único protocolo de autenticación de Windows.
Nota Solo deshabilite la seguridad de Kerberos si es adecuada para su entorno.
Deshabilitación de la compatibilidad con Kerberos mediante appcmd.exe
Abrir una ventana de símbolo del sistema
Para deshabilitar Kerberos y forzar el uso de NTLM, use este comando:
appcmd.exe set config -section:system.webServer/security/authentication/windowsAuthentication /+"providers.[value='NTLM']" /commit:apphost
Para volver al valor predeterminado con Kerberos habilitado, use este comando:
appcmd.exe set config -section:system.webServer/security/authentication/windowsAuthentication /+"providers.[value='Negotiate,NTLM']" /commit:apphost
Configuración de solicitudes de autenticación de cliente SymSrv
Cuando SymSrv recibe solicitudes de autenticación, el depurador puede mostrar el cuadro de diálogo de autenticación o rechazar automáticamente la solicitud, en función de cómo se haya configurado. Puede configurar este comportamiento mediante !sym prompts on|off. Por ejemplo, para activar los mensajes, use este comando.
!sym prompts on
Para comprobar la configuración actual, use este comando.
!sym prompts
Para obtener más información, consulte !sym y Firewalls y servidores proxy.