Al agregar o modificar un elemento del web.config en la carpeta web del modelo (RutaDeMiModelo\CSharpModel\Web\web.config) al hacer el deploy la configuracion por defecto de genexus, no considera lo que se ponga adicionalmente en el web.config
si queremos hacer un deploy y que el web.config tenga una personalizacion una forma es modificando los archivos
- C:\Program Files (x86)\GeneXus\GeneXus17\Deploy\CSharp\GeneXus.csharp.Server.targets
- C:\Program Files (x86)\GeneXus\GeneXus17\ApplicationServers\Templates\CSharpWeb\IIS_Base.stg
Vamos a modificar el archivo IIS_Base.stg agregando
location()::=<<
/*otro codigo existente */
$if (MiNuevaPropiedadSupport)$
$locationNueva()$
$endif$
>>
locationNueva()::=<<
<location path="miruta">
<system.webServer>
<httpErrors errorMode="Detailed" />
</system.webServer>
</location>
>>
Vamos a crear un arhivo MisPropiedades.prop y lo vamos a guardar en donde mas les sea de su agrado, en este archivo vamos a definir nuestras propiedades
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- Agregar nuevas propiedades o sobrescribir propiedades existentes -->
<MiNuevaPropiedadSupport>true</MiNuevaPropiedadSupport>
</PropertyGroup>
</Project>
Ahora vamos a modificar el archivo GeneXus.csharp.Server.targets
En la parte superior del archivo vamos agregar el Import a nuestro archivo MisPropiedades.props
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<Import Project="$(GX_PROGRAM_DIR)\Packages\Gxpm\Platforms\GeneXus.CSharp.WorkflowEngine.targets"/>
<Import Project="$(GX_PROGRAM_DIR)\Packages\Gxpm\Platforms\GeneXus.CSharp.WorkflowClient.targets"/>
<Import Project="$(GX_PROGRAM_DIR)\Library\GAM\GAM_Backend\Net\GAM_Backend.targets" Condition="'$(IncludeGAMBackend)' == 'true'"/>
<Import Project="MiRuta\MisPropiedades.props" Condition="Exists('MiRuta\MisPropiedades.props')" />
//... Mas codigo existente
por ultimo vamos agregar codigo en el elemento <GenerateFromTemplate
<GenerateFromTemplate
TemplateGroupFile="$(WebConfigTemplate)"
TemplateName="generateConfig"
Properties="
DisplayName=$(ProjectName);
Namespace=$(Namespace);
IntegratedSecurity=$(IntegratedSecurity);
RestEnabled=$(RestSupport);
APIRestSupport=$(APIRestSupport);
SDEnabled=$(SDSupport);
HttpsEnabled=$(Https);
IncludeQueryViewer=$(IncludeQueryViewer);
WebNotificationSupport=$(WebNotificationSupport);
HasWorkflow=$(HasWorkflow);
HasBC=$(HasBCs);
HasAPIs=$(HasAPIs);
ChatbotSupport=$(ChatbotSupport);
DeployOfflineReplicator=$(DeployOfflineReplicator);
MiNuevaPropiedadSupport = $(MiNuevaPropiedadSupport);"
Ahora al hacer un Deploy va verificar la propiead y va agregar el fragmento que necesitamos en el web.config
Referencias:
StringTemplate