publicar net deploy asp .net asp.net deployment configuration

.net - net - ¿Cómo está usando Machine.config, o es usted?



publicar asp.net core iis (4)

Estamos considerando usar machine.config para agregar una clave para el entorno, y luego tener una sección en el web.config que es exactamente la misma para todos los entornos. De esta manera podemos hacer una implementación XCopy "real".

Por ejemplo, en machine.config para cada computadora (estaciones de trabajo dev locales, servidores de escenario, servidores de compilación, servidores de producción), agregaremos lo siguiente:

<appSettings> <add key="Environment" value="Staging"/> </appSettings>

Luego, cualquier elemento de configuración que sea específico del entorno obtiene el entorno adjunto, de la siguiente manera:

<connectionStrings> <add name="Customers.Staging" provider="..." connectionString="..."/> </connectionStrings> <appSettings> <add key="NTDomain.Staging" value="test.mydomain.com"/> </appSettings>

Uno de los problemas para los que no tenemos una solución es cómo habilitar el seguimiento en web.config para el entorno de depuración y no para el entorno en vivo.

Otro problema es que la conexión de la línea viva incl. nombre de usuario y contraseña están ahora en su sistema de control de fuente. Sin embargo, esto no es un problema para nosotros.

Para la implementación de la aplicación ASP.Net, ¿qué tipo de información (si la hay) está almacenando en machine.config?

Si no lo está usando, ¿cómo está administrando la configuración de configuración específica del entorno que puede cambiar para cada entorno?

Estoy buscando algunas "mejores prácticas" y los beneficios / riesgos de cada uno. Estamos a punto de implementar una nueva aplicación para la producción en dos meses y tengo algo de flexibilidad en este tipo de decisiones. Quiero asegurarme de que estoy abordando las cosas de la mejor manera posible y tratando de evitar dispararme en el pie en una fecha posterior.

FYI Lo estamos usando (machine.config) actualmente solo para la información de conexión de DB y almacenando todas las demás variables que podrían cambiar en una tabla de configuración en la base de datos.


Si equilibra la carga de sus servidores, ABSOLUTAMENTE debe asegurarse de que la clave del equipo sea la misma en todos los servidores. Se supone que Viewstate es independiente del servidor, pero no lo es, por lo que obtendrá errores de corrupción de estado de vista si la clave del equipo no es la misma en todos los servidores.

<machineKey validationKey=''A130E240DF1C49E2764EF8A86CEDCBB11274E5298A130CA08B90EED016C0 14CEAE1D86344C29E67E99DF83347E43820050A2B9C9FC89E0574BF3394B6D0401A9'' decryptionKey=''2CC37FFA8D14925B9CBCC0E3B1506F35066FEF33FEB4ADC8'' validation=''SHA1''/>

De: http://www.c-sharpcorner.com/UploadFile/gopenath/Page107182007032219AM/Page1.aspx

PD: seguro que puedes habilitar ViewStateMAC = "false", pero no lo haces.


Usamos machine.config en nuestro servidor de producción para establecer / eliminar configuraciones específicas que son importantes para la producción y nunca queremos olvidarnos de configurarlas.

Estos son los 2 más importantes:

<system.web> <deployment retail="true" /> <healthMonitoring enabled="true" /> </system.web>


Uso machine.config no solo para ASP.NET, sino también para la configuración general. Implementé un algoritmo hash (Tiger) en C # y quería que estuviera disponible a través de la solicitud de la máquina. Entonces, registré mi ensamblado en el GAC y agregué lo siguiente a machine.config:

<?xml version="1.0" encoding="UTF-8"?> <configuration> <mscorlib> <cryptographySettings> <cryptoNameMapping> <cryptoClasses> <cryptoClass Tiger192="Jcs.Tiger.Tiger192, Jcs.Tiger, Culture=neutral, PublicKeyToken=66c61a8173417e64, Version=1.0.0.4"/> <cryptoClass Tiger160="Jcs.Tiger.Tiger160, Jcs.Tiger, Culture=neutral, PublicKeyToken=66c61a8173417e64, Version=1.0.0.4"/> <cryptoClass Tiger128="Jcs.Tiger.Tiger128, Jcs.Tiger, Culture=neutral, PublicKeyToken=66c61a8173417e64, Version=1.0.0.4"/> </cryptoClasses> <nameEntry name="Tiger" class="Tiger192"/> <nameEntry name="TigerFull" class="Tiger192"/> <nameEntry name="Tiger192" class="Tiger192"/> <nameEntry name="Tiger160" class="Tiger160"/> <nameEntry name="Tiger128" class="Tiger128"/> <nameEntry name="System.Security.Cryptography.HashAlgorithm" class="Tiger192"/> </cryptoNameMapping> <oidMap> <oidEntry OID="1.3.6.1.4.1.11591.12.2" name="Jcs.Tiger.Tiger192"/> </oidMap> </cryptographySettings> </mscorlib> </configuration>

Esto permite que mi código se vea así:

using (var h1 = HashAlgorithm.Create("Tiger192")) { ... }

y no hay ninguna dependencia del ensamblado Jcs.Tiger.dll en mi código, ni dura ni suave.