<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>BizTalkLATAM's Blog</title><link>http://blogs.msdn.com/biztalklatam/default.aspx</link><description>Hay cosas que el software no puede resolver, para todo lo demas esta BTS</description><dc:language>es</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Usando el adaptador de WSS</title><link>http://blogs.msdn.com/biztalklatam/archive/2008/04/29/usando-el-adaptador-de-wss.aspx</link><pubDate>Wed, 30 Apr 2008 02:09:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8439961</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/8439961.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=8439961</wfw:commentRss><description>&lt;p&gt;El &lt;a href="http://msdn.microsoft.com/en-us/library/aa558796.aspx"&gt;adaptador de WSS&lt;/a&gt; es utilizado para enviar informaci&amp;#243;n desde BizTalk hacia liberias de SharePoint. Una de las funcionalidades que soporta el adaptador, adem&amp;#225;s de enviar un mensaje como tal, es la posibilidad de asignar valores a columnas definidas en dicha libreria (ya sean nativas de Sharepoint o definidas por el usuario). &lt;/p&gt;  &lt;p&gt;Estas columnas pueden ser especificadas de 3 formas: &lt;/p&gt;  &lt;p&gt;La primera forma es especificando las columnas a las que se desea dar valores directamente en la &lt;a href="http://msdn.microsoft.com/en-us/library/aa560874.aspx"&gt;configuraci&amp;#243;n del puerto mismo&lt;/a&gt;, como muestra la siguiente figura: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/EnviandocolumnasaWSS_E49E/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/EnviandocolumnasaWSS_E49E/image_thumb_1.png" width="220" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Una segunda forma es definiendo las columnas programaticamente en una orquestaci&amp;#243;n de BizTalk o un componente del Pipeline. Para esto, el adaptador de WSS soporta una propiedad del contexto del mensaje &lt;a href="http://msdn.microsoft.com/en-us/library/aa547920.aspx"&gt;WSS.ConfigPropertiesXml&lt;/a&gt;, la cual contiene un XML con la definici&amp;#243;n y valores de las columnas: &lt;/p&gt;  &lt;pre class="csharpcode"&gt;strConfig = &lt;span class="str"&gt;&amp;quot;&amp;lt;ConfigPropertiesXml&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertyName1&amp;gt;Error Message&amp;lt;/PropertyName1&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertySource1&amp;gt;&amp;quot;&lt;/span&gt; + sDescription + &lt;span class="str"&gt;&amp;quot;&amp;lt;/PropertySource1&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertyName2&amp;gt;Batch Size&amp;lt;/PropertyName2&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertySource2&amp;gt;&amp;quot;&lt;/span&gt; + sBatchSize + &lt;span class="str"&gt;&amp;quot;&amp;lt;/PropertySource2&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertyName3&amp;gt;Invoice Number&amp;lt;/PropertyName3&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertySource3&amp;gt;&amp;quot;&lt;/span&gt; + sInvoice + &lt;span class="str"&gt;&amp;quot;&amp;lt;/PropertySource3&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;/ConfigPropertiesXml&amp;gt;&amp;quot;&lt;/span&gt;;
Msg(WSS.ConfigPropertiesXml) = strConfig;&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;La tercera opci&amp;#243;n es utilizar una combinaci&amp;#243;n de ambos escenarios para definir las columnas: definir una parte de las columas en la configuraci&amp;#243;n del puerto y otra parte en la orquestaci&amp;#243;n.&amp;#160; Se debe tener cuidado de no especificar una misma columna en ambos lugares para evitar conflictos, en el siguiente ejemplo se adiciona una columna al puerto est&amp;#225;tico de env&amp;#237;o configurado en la primera opci&amp;#243;n.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;strConfig = &lt;span class="str"&gt;&amp;quot;&amp;lt;ConfigPropertiesXml&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertyName4&amp;gt;Source&amp;lt;/PropertyName4&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;PropertySource4&amp;gt;&amp;quot;&lt;/span&gt; + sSource + &lt;span class="str"&gt;&amp;quot;&amp;lt;/PropertySource4&amp;gt;&amp;quot;&lt;/span&gt;;
strConfig = strConfig + &lt;span class="str"&gt;&amp;quot;&amp;lt;/ConfigPropertiesXml&amp;gt;&amp;quot;&lt;/span&gt;;
Msg(WSS.ConfigPropertiesXml) = strConfig;&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Esta &amp;#250;ltima opci&amp;#243;n es muy util cuando una parte las columnas son relativamente est&amp;#225;ticas, mientras que otra parte son din&amp;#225;micas y bien sea las columnas mismas o sus valores solo pueden ser calculados en tiempo de ejecuci&amp;#243;n. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8439961" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>Posters de BizTalk 2006</title><link>http://blogs.msdn.com/biztalklatam/archive/2008/03/17/posters-de-biztalk-2006.aspx</link><pubDate>Tue, 18 Mar 2008 00:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8296056</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/8296056.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=8296056</wfw:commentRss><description>&lt;p&gt;En la siguiente dirección pueden encontrar todos los posters que Microsoft ha generado para BizTalk 2006 R2 explicando todas sus características.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/biztalk/techinfo/guides.mspx" mce_href="http://www.microsoft.com/biztalk/techinfo/guides.mspx"&gt;http://www.microsoft.com/biztalk/techinfo/guides.mspx&lt;/a&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;   &lt;br&gt;También existe un poster acerca de la arquitectura en BizTalk 2006 y puede ser descargado &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=65ab53ce-78c1-4cc4-96fd-a492dd7f3f4a&amp;amp;DisplayLang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=65ab53ce-78c1-4cc4-96fd-a492dd7f3f4a&amp;amp;DisplayLang=en"&gt;aquí&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8296056" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>Depurando información en la DTA en BizTalk 2004</title><link>http://blogs.msdn.com/biztalklatam/archive/2008/03/13/depurando-informaci-n-en-la-dta-en-biztalk-2004.aspx</link><pubDate>Fri, 14 Mar 2008 05:15:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8192919</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/8192919.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=8192919</wfw:commentRss><description>&lt;p&gt;El proceso de depuraci&amp;#243;n de la base de datos de tracking &amp;quot;DTA&amp;quot; en BizTalk 2004 o BizTalk 2004 SP1 puede tardar horas o tal vez d&amp;#237;as, depende de la cantidad de informaci&amp;#243;n en la BD, debido a la l&amp;#243;gica del procedimiento &lt;strong&gt;dtasp_PruneTrackingdatabase()&lt;/strong&gt;.&amp;#160; Este inconveniente no sucede en BizTalk 2006 y BizTalk 2004 SP2 por que se hicieron unas correcciones a estos procesos de depuraci&amp;#243;n de las bases de datos.&amp;#160; &lt;/p&gt;  &lt;p&gt;Sin embargo, parte del proceso de instalaci&amp;#243;n de BizTalk 2004 SP2 es limpiar la BD de tracking por lo tanto si esta tiene mucha informaci&amp;#243;n dicho proceso podra tardarse mas horas de lo previsto ya que utiliza este procedimiento.&lt;/p&gt;  &lt;p&gt;Para evitar este inconveniente, &lt;strong&gt;&lt;em&gt;ES NECESARIO&lt;/em&gt;&lt;/strong&gt; instalar el &lt;a href="http://support.microsoft.com/?id=894253"&gt;Hotfix 894253&lt;/a&gt; antes de instalar BizTalk 2004 SP2.&amp;#160; Este hotfix contiene un script que elimina toda la informaci&amp;#243;n relacionada exclusivamente a las instancias completadas de la BD de tracking, con la &amp;#250;nica salvedad que todos los registros ser&amp;#225;n borrados sin tener en cuenta su fecha de almacenamiento.&lt;/p&gt;  &lt;p&gt;De igual forma, este hotfix puede aplicarse a BizTalk 2004 o BizTalk 2004 SP1 para depurar informaci&amp;#243;n de la BD y evitar su constante crecimiento.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8192919" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2004/default.aspx">Base de Conocimiento BTS 2004</category></item><item><title>Usando [WMISEARCHER] y [WMI]</title><link>http://blogs.msdn.com/biztalklatam/archive/2008/02/01/usando-wmisearcher-y-wmi.aspx</link><pubDate>Fri, 01 Feb 2008 18:45:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7375475</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/7375475.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=7375475</wfw:commentRss><description>&lt;p&gt;Los tipos de aceleradores [WMISEARCHER] y [WMI] permiten consultar objetos de wmi en forma mas sencilla desde PowerShell.&amp;#160; Basicamente estos tipos complementan con una sintaxis mas compacta la funcionalidad del cmdlet Get-WmiObject. &lt;/p&gt;  &lt;p&gt;[WMI] es utilizado para obtener una instancia especifica de un tipo de clase:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;$hosts = [WMI]&lt;span class="str"&gt;'root\MicrosoftBizTalkServer:MSBTS_HostInstance.Name=&amp;quot;Microsoft BizTalk Server BizTalkServerIsolatedHost SERVERNAME&amp;quot;'&lt;/span&gt;
$hosts | select HostName,Logon,Name | format-list&lt;/pre&gt;

&lt;p&gt;[WMISEARCHER] es utilizado para obtener instancias de una clase en WMI utilizando una consulta WQL:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;$hosts = [WMISEARCHER] &lt;span class="str"&gt;&amp;quot;select * from MSBTS_HostInstance&amp;quot;&lt;/span&gt;
$hosts.scope = &lt;span class="str"&gt;&amp;quot;root\MicrosoftBizTalkServer&amp;quot;&lt;/span&gt;
$hosts.Get()&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;En el caso del [WMISEARCHER] es necesario la utilizacion de la propiedad &lt;em&gt;.scope&lt;/em&gt; para poder acceder a las clases que no esten en el namespace por defecto de WMI antes de intentar obtener el resultado de la consulta.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7375475" width="1" height="1"&gt;</description></item><item><title>Un escenario de mensajeria sin orquestaciones</title><link>http://blogs.msdn.com/biztalklatam/archive/2008/01/23/un-escenario-de-mensajeria-sin-orquestaciones.aspx</link><pubDate>Wed, 23 Jan 2008 18:19:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7209464</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/7209464.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=7209464</wfw:commentRss><description>&lt;p&gt;En ocasiones es necesario utilizar BizTalk Server para un escenario de mensajer&amp;#237;a el cual debe consultar informaci&amp;#243;n a una aplicaci&amp;#243;n externa y luego enviar &amp;#233;sta a otra aplicaci&amp;#243;n externa sin necesidad de aplicar alguna logica de negocio durante su proceso.&amp;#160; &lt;/p&gt;  &lt;p&gt;En ocasiones se utilizan orquestaciones en este tipo de escenarios lo cual algunas veces puede resultar innecesario.&amp;#160; Para ilustrar esta situaci&amp;#243;n se puede tomar el ejemplo &lt;a href="http://msdn2.microsoft.com/en-us/library/ms966378.aspx"&gt;HTTPSolicitResponse&lt;/a&gt; que viene en SDK de BizTalk Server 2004/2006/2006r2.&amp;#160; HTTPSolicitResponse muestra una forma de c&amp;#243;mo usar BizTalk Server para consultar un servicio HTTP y luego enviar la respuesta el FileSystem.&amp;#160; Los artefactos usados en esta soluci&amp;#243;n son:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Un Receive Port llamado &lt;em&gt;&lt;strong&gt;HTTPSolicitResponseReceivePort&lt;/strong&gt;&lt;/em&gt; que recibe la informaci&amp;#243;n desde el FileSystem&lt;/li&gt;    &lt;li&gt;Una orquestacion que procesa la informaci&amp;#243;n&lt;/li&gt;    &lt;li&gt;Un Send Port llamado &lt;em&gt;&lt;strong&gt;HTTPSolicitResponseTwoWayPort&lt;/strong&gt;&lt;/em&gt; que env&amp;#237;a hace la petici&amp;#243;n al servicio HTTP&lt;/li&gt;    &lt;li&gt;Un Send Port llamado &lt;strong&gt;&lt;em&gt;HTTPSolicitResponseSendPort&lt;/em&gt;&lt;/strong&gt; que env&amp;#237;a el resultado al FileSystem &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Sin embargo, en su ejecuci&amp;#243;n esta soluci&amp;#243;n utiliza m&amp;#225;s recursos de los estrictamente necesarios, debido aque se usa una orquestacion como enrutadora sin procesar ningun tipo de proceso de negocio real tal como puede observar en la siguiente figura.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/Unescenariodemensajeria_13B82/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="158" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/Unescenariodemensajeria_13B82/image_thumb_1.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;De acuerdo a la arquitectura de BizTalk Server (ver figura) todos los mensajes deben pasar por el MessageBox para poder ser instanciados por las orquestaciones o puertos de envio.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/Unescenariodemensajeria_13B82/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="143" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/Unescenariodemensajeria_13B82/image_thumb_2.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Mejorando la soluci&amp;#243;n&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Para mejorar el performance de la soluci&amp;#243;n podr&amp;#237;a eliminarse la orquestaci&amp;#243;n lo que permitir&amp;#237;a reducir su ejecuci&amp;#243;n a los siguientes pasos: &lt;/p&gt;  &lt;p&gt;1. &lt;strong&gt;&lt;em&gt;HTTPSolicitResponseReceivePort&lt;/em&gt;&lt;/strong&gt; env&amp;#237;a el mensaje a MessageBox&lt;/p&gt;  &lt;p&gt;2. &lt;strong&gt;&lt;em&gt;HTTPSolicitResponseTwoWayPort&lt;/em&gt;&lt;/strong&gt; recibe el mensaje desde MessageBox y env&amp;#237;a la solicitud HTTP, una vez recibe la respuesta vuelve a enviar el mensaje a MessageBox&lt;/p&gt;  &lt;p&gt;3. &lt;strong&gt;&lt;em&gt;HTTPSolicitResponseSendPort&lt;/em&gt;&lt;/strong&gt; recibe el mensaje desde la MessageBox y lo env&amp;#237;a al FileSystem&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;De igual forma, al eliminar la orquestaci&amp;#243;n el gr&amp;#225;fico de arquitectura tambi&amp;#233;n ser&amp;#237;a modificado as&amp;#237;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/Unescenariodemensajeria_13B82/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="143" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/Unescenariodemensajeria_13B82/image_thumb_3.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;El nuevo escenario presenta estas ventajas:&lt;/p&gt;  &lt;p&gt;1. Se evita una ejecuci&amp;#243;n innecesaria de la orquestaci&amp;#243;n&lt;/p&gt;  &lt;p&gt;2. Menor utilizacion del MessageBox, lo que significa menor consumo de recursos&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Para lograr este nuevo escenario se debe configurar los puertos de salida (Send Ports) para que sean instanciados una vez el mensaje el publicado en el MessageBox.&amp;#160; A continuaci&amp;#243;n se muestra la forma de como configurar la nueva soluci&amp;#243;n:&lt;/p&gt;  &lt;p&gt;1. Poner en estado Unenlist la orquestaci&amp;#243;n &lt;strong&gt;&lt;em&gt;MultiplyTwoIntegers&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;2. Editar las propiedades del Send Port llamado &lt;strong&gt;&lt;em&gt;HttpSolicitResponseTwoWayPort&lt;/em&gt;&lt;/strong&gt; y establecer este filtro:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BTS.ReceivePortName == HttpSolicitResponseReceivePort&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;3. Editar las propiedades del Send Port llamado &lt;strong&gt;&lt;em&gt;HttpSolicitResponseSendPort&lt;/em&gt;&lt;/strong&gt; y establecer este filtro:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BTS.SPName == HttpSolicitResponseTwoWayPort&lt;/strong&gt;&lt;/p&gt; &lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;p&gt;4. Probar el nuevo escenario copiando el archivo en la carpeta de recepci&amp;#243;n&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Tambi&amp;#233;n se puede hacer &lt;em&gt;undeploy&lt;/em&gt; del assembly &lt;em&gt;&lt;strong&gt;HttpSolicitResponse.dll&lt;/strong&gt;&lt;/em&gt; y probar nuevamente.&amp;#160; Sin embargo, al realizar este cambio tambi&amp;#233;n se debe cambiar los pipelines utilizados en los puertos de la siguiente forma:&lt;/p&gt;  &lt;p&gt;1.&amp;#160; Los pipelines &lt;strong&gt;&lt;em&gt;XmlReceive&lt;/em&gt;&lt;/strong&gt; por &lt;strong&gt;&lt;em&gt;PassThruReceive&lt;/em&gt;&lt;/strong&gt; en el Receive Location &lt;em&gt;HttpSolicitResponseReceiveLocation&lt;/em&gt; y en el Send Port &lt;em&gt;HttpSolicitResponseTwoWayPort&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;2. Los pipelines &lt;strong&gt;&lt;em&gt;XmlTransmit&lt;/em&gt;&lt;/strong&gt; por &lt;em&gt;&lt;strong&gt;PassThruTransmit&lt;/strong&gt; &lt;/em&gt;en los Send Ports &lt;em&gt;HttpSolicitResponseTwoWayPort&lt;/em&gt; y &lt;em&gt;HttpSolicitResponseSendPort&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;El anterior cambio ser&amp;#237;a necesario ya que los pipelines Xml* generar&amp;#237;an un error al procesar los mensajes intentando obtener su MessageType desde la BizTalkMgmtDb.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Conclusi&amp;#243;n&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Lo anterior indica que NO se deberia utilizar orquestaciones que solo sirvan como reenrutadoras de la informacion y NO ejecuten alguna logica de negocio real en un escenario de mensajeria.&lt;/p&gt;  &lt;p&gt;De igual forma estos escenario de mensajeria se pueden utilizar para consultar informaci&amp;#243;n a SQL Server con el adaptador de SQL, consultar un Servicio Web usando el adaptador de SOAP (ver ejemplo &lt;a href="http://go.microsoft.com/fwlink/?LinkId=99745"&gt;Consumming Web Services with Messaging-Only Scenario&lt;/a&gt;), u otro escenario de estas caracter&amp;#237;sticas.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7209464" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2004/default.aspx">Base de Conocimiento BTS 2004</category><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>Cuidado al construir multiples mensajes con XmlDocument</title><link>http://blogs.msdn.com/biztalklatam/archive/2008/01/14/cuidado-al-construir-multiples-mensajes-con-xmldocument.aspx</link><pubDate>Tue, 15 Jan 2008 01:32:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7112391</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/7112391.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=7112391</wfw:commentRss><description>&lt;p&gt;Una de las técnicas utilizadas para definir mensajes al desarrollar orquestaciones es usar objetos System.Xml.XmlDocument.&amp;nbsp; Sin embargo, es necesario tener cuidado al momento de utilizar el mismo objeto para definir mas de un mensaje usando un sólo "Construction Shape" ya que los mensajes pueden no almacenarse en la base de datos con la información esperada.&lt;/p&gt; &lt;p&gt;El siguiente escenario (ver figura) pretende explicar con más detalle lo comentado.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ConstruyendomensajesconXmlDocument_9EC9/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ConstruyendomensajesconXmlDocument_9EC9/image_thumb_1.png" width="115" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;En la figura se observa como la orquestación construye dos mensajes: Msg2 y Msg3, usando el mismo "Construction Shape" y para ambos mensajes usa el mismo objeto xmlDoc de tipo System.Xml.XmlDocument.&amp;nbsp; Asi, en el primer Message Assigment Shape el siguiente codigo define el Msg2: &lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;// carga xml y asigna el Msg2&lt;/span&gt;
xmlDoc.LoadXml(&lt;span class="str"&gt;"&amp;lt;Root&amp;gt;&amp;lt;Field&amp;gt;Field_2&amp;lt;/Field&amp;gt;&amp;lt;/Root&amp;gt;"&lt;/span&gt;);
Msg2 = xml;&lt;/pre&gt;
&lt;p&gt;Y en el segundo Message Assigment Shape este codigo define el Msg3:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;// carga xml y asigna el Msg3&lt;/span&gt;
xmlDoc.LoadXml(&lt;span class="str"&gt;"&amp;lt;Root&amp;gt;&amp;lt;Field&amp;gt;Field_3&amp;lt;/Field&amp;gt;&amp;lt;/Root&amp;gt;"&lt;/span&gt;);
Msg3 = xml;
&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;En teoria el resultado deberia ser dos archivos diferentes, sin embargo el resultado al ejecutarse la orquestación no es el esperado ya que ambos archivos contienen la misma informacion.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ConstruyendomensajesconXmlDocument_9EC9/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="132" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ConstruyendomensajesconXmlDocument_9EC9/image_thumb_2.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Este inconveniente se debe a dos razones:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El mensaje de BizTalk guarda una referencia al objeto XmlDocument asignado. 
&lt;li&gt;El objeto XmlDocument fue modificado en el mismo Construction Shape por lo que no fue posible hacer persistente el mensaje.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Por lo tanto, el objeto xml que se utilizo para definir el Msg2 fue modificado para construir el Msg3 antes de que el mensaje Msg2 se hiciese persistente.&amp;nbsp; Esto ocasiono que el contenido de ambos mensajes en la base de datos sea el mismo.&lt;/p&gt;
&lt;p&gt;Esta característica esta presente en las versiones de biztalk 2004/2006/2006r2.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7112391" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2004/default.aspx">Base de Conocimiento BTS 2004</category><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>Desplegando soluciones de BTS usando Targets</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/11/21/desplegando-soluciones-de-bts-usando-targets.aspx</link><pubDate>Wed, 21 Nov 2007 19:18:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6458051</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/6458051.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=6458051</wfw:commentRss><description>&lt;p&gt;Una de las principales características al crear archivos&amp;nbsp;.MSI para instalar aplicaciones de&amp;nbsp;BizTalk Server 2006&amp;nbsp;en otros ambientes, es poder adicionar archivos de configuración (&lt;strong&gt;&lt;em&gt;binding files&lt;/em&gt;&lt;/strong&gt;)&amp;nbsp;y especificar en&amp;nbsp;cual ambiente van a ser utilizados.&lt;/p&gt; &lt;p&gt;Esta funcionalidad&amp;nbsp;permite generar un solo instalador&amp;nbsp;que sirve para&amp;nbsp;los diferentes ambientes como desarrollo, precalidad, calidad, QA, y producccion,&amp;nbsp;entre otros (depende de las politicas de la empresa).&amp;nbsp; &lt;/p&gt; &lt;p&gt;Este proceso es sencillo,&amp;nbsp;basta con adicionar un archivo de configuración como recurso desde la consola administrativa&amp;nbsp;y especificar el ambiente (target)&amp;nbsp;en el cual se quiere ejecutar.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image_1.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image_thumb_1.png" width="215" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;De esta forma se pueden tener todos los archivos de configuración necesarios para los diferentes ambientes en un solo instalador.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image_2.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="60" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image_thumb_2.png" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Por último, al momento de importar el archivo simplemente se debe seleccionar el ambiente correcto para aplicar la configuración deseada.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image_3.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="84" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image_thumb_3.png" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Sin embargo, cuando se importa un archivo .MSI la configuración se&amp;nbsp;aplica de acuerdo al siguiente orden:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Se crea la configuración generada automáticamente cuando se exporto el archivo .MSI.&amp;nbsp; Esto si la aplicacion tenía puertos de envío, recepción, u otros.&lt;br&gt; &lt;li&gt;Aplica los archivos de configuración que se adicionaron como recursos pero a los cuales no se especificó un ambiente (target).&lt;br&gt; &lt;li&gt;Aplica los archivos de configuración&amp;nbsp;de acuerdo al ambiente seleccionado.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Este orden de&amp;nbsp;ejecución puede causar algunos inconvenientes en la instalación de la aplicación ya que se puede crear configuración como puertos de envios u otros en ambientes no deseasdos, p. ej. un ambiente de producción.&amp;nbsp;&amp;nbsp;Por lo tanto se recomienda tener en cuenta:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Cuando se exporte el archivo .MSI, asegurarse de no seleccionar la opcion &lt;strong&gt;&lt;em&gt;Binding&lt;/em&gt;&lt;/strong&gt; que se presenta en la ventana &lt;strong&gt;&lt;em&gt;Select Resources&lt;/em&gt;&lt;/strong&gt;.&amp;nbsp; Esta opción indica que no se genere&amp;nbsp;la configuración por defecto de la aplicación.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="309" alt="image" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/143161a384e3_915D/image_thumb.png" width="376" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Especificar siempre un ambiente (target) a los archivos de configuración asociados como recursos, de esta forma&amp;nbsp;la configuración siempre sera aplicada de acuerdo al ambiente seleccionado.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;De esta forma no se tendran inconvenientes en el momento de la realizar&amp;nbsp;los despliegues de las aplicacion de BizTalk Server 2006.&lt;/p&gt;&lt;font color="#ff8000" size="1"&gt;&lt;strong&gt;Autor: Carlos Medina&lt;br&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#c0c0c0" size="1"&gt;&lt;strong&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;ningun derecho&lt;/strong&gt;&lt;/font&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6458051" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>Consultando Instancias de Servicios en BizTalk 2006</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/07/24/consultando-instancias-de-servicios-en-biztalk-2006.aspx</link><pubDate>Wed, 25 Jul 2007 02:28:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4035849</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/4035849.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=4035849</wfw:commentRss><description>&lt;p&gt;Existen dos formas de consultar instancias de servicios en BizTalk Server 2006, utilizando WMI o utilizando &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.biztalk.operations.aspx"&gt;Microsoft.Biztalk.Operations&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;WMI&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Usando &lt;a href="http://msdn2.microsoft.com/en-us/library/aa394606.aspx"&gt;WQL&lt;/a&gt;&amp;nbsp;se puede realizar una consulta&amp;nbsp;a la&amp;nbsp;clase&amp;nbsp;&lt;a href="http://msdn2.microsoft.com/en-US/library/aa510169.aspx"&gt;MSBTS_ServiceInstance&lt;/a&gt; y retornar todas&amp;nbsp;las instancias de servicio&amp;nbsp;con sus&amp;nbsp;respectivos valores&amp;nbsp;dados por el proveedor para WMI en BizTalk.&amp;nbsp; Esta opción es válida en BizTalk 2004 y BizTalk 2006.&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Management;
......


ManagementObjectSearcher searcher = 
    &lt;span class="kwrd"&gt;new&lt;/span&gt; ManagementObjectSearcher(&lt;span class="str"&gt;"root\\MicrosoftBizTalkServer"&lt;/span&gt;, 
    &lt;span class="str"&gt;"SELECT * FROM MSBTS_ServiceInstance"&lt;/span&gt;); 

&lt;span class="kwrd"&gt;foreach&lt;/span&gt; (ManagementObject queryObj &lt;span class="kwrd"&gt;in&lt;/span&gt; searcher.Get())
{
    Console.WriteLine(&lt;span class="str"&gt;"-----------------------------------"&lt;/span&gt;);
    Console.WriteLine(&lt;span class="str"&gt;"MSBTS_ServiceInstance instance"&lt;/span&gt;);
    Console.WriteLine(&lt;span class="str"&gt;"-----------------------------------"&lt;/span&gt;);
    Console.WriteLine(&lt;span class="str"&gt;"ActivationTime: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"ActivationTime"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"ErrorCategory: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"ErrorCategory"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"ErrorDescription: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"ErrorDescription"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"ErrorId: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"ErrorId"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"HostName: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"HostName"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"InstanceID: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"InstanceID"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"MgmtDbNameOverride: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"MgmtDbNameOverride"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"MgmtDbServerOverride: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"MgmtDbServerOverride"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"PendingOperation: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"PendingOperation"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"PendingOperationTime: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"PendingOperationTime"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"ServiceClass: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"ServiceClass"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"ServiceClassId: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"ServiceClassId"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"ServiceName: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"ServiceName"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"ServiceStatus: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"ServiceStatus"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"ServiceTypeId: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"ServiceTypeId"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"Status: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"Status"&lt;/span&gt;]);
    Console.WriteLine(&lt;span class="str"&gt;"SuspendTime: {0}"&lt;/span&gt;, queryObj[&lt;span class="str"&gt;"SuspendTime"&lt;/span&gt;]);
}&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Microsoft.BizTalk.Operations&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Otra forma es utilizar &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.biztalk.operations.aspx"&gt;Microsoft.Biztalk.Operations&lt;/a&gt;, esta librería&amp;nbsp;viene en&amp;nbsp;BizTalk 2006 y permite consultar instancias de servicios y/o mensajes a la base de datos MessageBox o a la base de datos de traceo (Tracking).&amp;nbsp;&amp;nbsp;A diferencia de los resultados retornados en WMI, M.B.O. devuelve una coleccion de objetos que se mapean a difernetes clases de acuerdo al tipo de instancia de servicio tal como se muestra en el código de ejemplo.&lt;/p&gt;
&lt;p&gt;De igual forma, M.B.O.&amp;nbsp;tiene información que WMI no retorna como el nombre de la aplicación, si esta en breakpoint, y si el puerto de envío es el primario, entre otras.&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.BizTalk.Operations;
......

BizTalkOperations ops = &lt;span class="kwrd"&gt;new&lt;/span&gt; BizTalkOperations();
IEnumerable enumb = ops.GetServiceInstances();
IEnumerator enumt = enumb.GetEnumerator();

&lt;span class="kwrd"&gt;while&lt;/span&gt; (enumt.MoveNext())
{
    &lt;span class="kwrd"&gt;object&lt;/span&gt; inst = enumt.Current;

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (inst &lt;span class="kwrd"&gt;is&lt;/span&gt; Instance)
    {
        Instance instance = inst &lt;span class="kwrd"&gt;as&lt;/span&gt; Instance;
        Console.WriteLine(instance.Class);
        Console.WriteLine(instance.CreationTime);
        Console.WriteLine(instance.ErrorDescription);
        Console.WriteLine(instance.HostName);
        Console.WriteLine(instance.ID);
        Console.WriteLine(instance.InstanceStatus);
        Console.WriteLine(instance.ServiceType);
        Console.WriteLine(instance.ServiceTypeID);
    }

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (inst &lt;span class="kwrd"&gt;is&lt;/span&gt; MessageBoxServiceInstance)
    {
        MessageBoxServiceInstance msginst = inst &lt;span class="kwrd"&gt;as&lt;/span&gt; MessageBoxServiceInstance;
        Console.WriteLine(msginst.Adapter);
        Console.WriteLine(msginst.Application);
        Console.WriteLine(msginst.CurrentProcessingServer);
        Console.WriteLine(msginst.ErrorCategory);
        Console.WriteLine(msginst.ErrorCode);
        Console.WriteLine(msginst.ErrorProcessingServer);
        Console.WriteLine(msginst.MessageBox);
        Console.WriteLine(msginst.PendingOperation);
        Console.WriteLine(msginst.PendingOperationSubmitTime);
        Console.WriteLine(msginst.SuspendTime);
        Console.WriteLine(msginst.URI);
    }

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (inst &lt;span class="kwrd"&gt;is&lt;/span&gt; SendPortInstance)
    {
        SendPortInstance spinst = inst &lt;span class="kwrd"&gt;as&lt;/span&gt; SendPortInstance;
        Console.WriteLine(spinst.HasServiceWindow());
        Console.WriteLine(spinst.IsPrimaryTransport());
        Console.WriteLine(spinst.Priority);
        Console.Write(spinst.ServiceWindowEnd);
        Console.Write(spinst.ServiceWindowStart);
    }

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (inst &lt;span class="kwrd"&gt;is&lt;/span&gt; TrackedServiceInstance)
    {
        TrackedServiceInstance tinst = inst &lt;span class="kwrd"&gt;as&lt;/span&gt; TrackedServiceInstance;
        Console.WriteLine(tinst.EndTime);
        Console.WriteLine(tinst.ExitCode);
        Console.WriteLine(tinst.TrackingDb);
    }

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (inst &lt;span class="kwrd"&gt;is&lt;/span&gt; OrchestrationInstance)
    {
        OrchestrationInstance oinst = inst &lt;span class="kwrd"&gt;as&lt;/span&gt; OrchestrationInstance;
        Console.WriteLine(oinst.InBreakpoint);
        Console.WriteLine(oinst.UserState);
    }

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (inst &lt;span class="kwrd"&gt;is&lt;/span&gt; MSMQtInstance)
    {
        MSMQtInstance minst = inst &lt;span class="kwrd"&gt;as&lt;/span&gt; MSMQtInstance;
        Console.WriteLine(minst.InboundUserState);
        Console.WriteLine(minst.MSMQtDirection);
        Console.WriteLine(minst.OutboundUserState);
    }
}&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff8000" size="1"&gt;&lt;strong&gt;Autor: Carlos Medina&lt;br&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#c0c0c0" size="1"&gt;&lt;strong&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;ningun derecho&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4035849" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Entrenamiento+_2600_amp_3B00_+Recursos+BTS+2006/default.aspx">Entrenamiento &amp;amp; Recursos BTS 2006</category></item><item><title>Donde puedo almacenar las BR?</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/07/17/donde-puedo-almacenar-las-br.aspx</link><pubDate>Wed, 18 Jul 2007 07:29:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3931270</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/3931270.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=3931270</wfw:commentRss><description>&lt;p&gt;BizTalk Server a través del Business Rule Engine (BRE) ofrece la posibilidad de almacenar las reglas de negocio (BR) implementadas en archivos xml o en bases de datos para&amp;nbsp;su posterior&amp;nbsp;invocación y ejecución.&amp;nbsp; Cada almacenamiento ofrece sus ventajas y desventajas, y adicional su invocación difiere en cada uno.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Archivos XML&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Una BR se puede almacenar e invocar desde un archivo plano usando la clase &lt;a href="https://msdn2.microsoft.com/en-us/library/ms996758.aspx"&gt;FileRuleStore&lt;/a&gt;.&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;void&lt;/span&gt; SaveToFile()
{
    RuleStore ruleStore = &lt;span class="kwrd"&gt;new&lt;/span&gt; FileRuleStore(&lt;span class="str"&gt;"filename"&lt;/span&gt;);
    ruleStore.Save(&lt;span class="kwrd"&gt;new&lt;/span&gt; RuleSet(&lt;span class="str"&gt;"rulesetname"&lt;/span&gt;));
}

&lt;span class="kwrd"&gt;void&lt;/span&gt; LoadFromFile()
{
    RuleStore ruleStore = &lt;span class="kwrd"&gt;new&lt;/span&gt; FileRuleStore(&lt;span class="str"&gt;"filename"&lt;/span&gt;);
    RuleSetInfoCollection rsInfo = ruleStore.GetRuleSets(&lt;span class="str"&gt;"rulesetname"&lt;/span&gt;, RuleStore.Filter.Latest);
    RuleSet newRS = ruleStore.GetRuleSet(rsInfo[0]);
}&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;Este almacenamiento ofrece las siguientes ventajas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No es necesario tener una base de datos (como SQL Server) para su almacenamiento&amp;nbsp;y ejecución. 
&lt;li&gt;El instanciamiento&amp;nbsp;de la BR es mas rápida ya que evita el acceso a la base de datos. 
&lt;li&gt;La BR puede ser modificada con un editor como Bloc de Notas (notepad) y no es necesaria&amp;nbsp;su publicación (publish) y despliegue (deploy) posterior.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Las desventajas son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Estas BR no pueden ser invocadas desde un orquestación con el &lt;a href="http://msdn2.microsoft.com/EN-US/library/aa561607.aspx"&gt;Call Rules Shape&lt;/a&gt;, sólo desde .net assemblies utilizando la clase FileRuleStore. 
&lt;li&gt;Si una BR va a ser accedida por varias aplicaciones se debe copiar el archivo en una ruta compartida o crear una copia en cada aplicación. 
&lt;li&gt;No se puede editar con el&amp;nbsp;Business Rule Composer.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Base de datos&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Una BR puede ser almacenada e invocada desde una base de datos usando las clases &lt;a href="https://msdn2.microsoft.com/en-us/library/ms983548.aspx"&gt;SqlRuleStore&lt;/a&gt; o &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.ruleengine.oledbrulestore.aspx"&gt;OleDbRuleStore&lt;/a&gt;&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.BizTalk.RuleEngineExtensions;

&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DeployRuleSet(RuleSet ruleset)
{
    RuleSetDeploymentDriver dd = &lt;span class="kwrd"&gt;new&lt;/span&gt; RuleSetDeploymentDriver();
    SqlRuleStore sqlrs;
    sqlrs = (SqlRuleStore) dd.GetRuleStore();

    sqlrs.Add(ruleset, &lt;span class="kwrd"&gt;true&lt;/span&gt;);
    dd.Deploy(&lt;span class="kwrd"&gt;new&lt;/span&gt; RuleSetInfo(ruleset.Name, 
            ruleset.CurrentVersion.MajorRevision, ruleset.CurrentVersion.MinorRevision));
}

&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetRuleStore(&lt;span class="kwrd"&gt;string&lt;/span&gt; rulesetname)
{
    RuleSetDeploymentDriver dd = &lt;span class="kwrd"&gt;new&lt;/span&gt; RuleSetDeploymentDriver();
    SqlRuleStore sqlrs = (SqlRuleStore) dd.GetRuleStore();

    RuleSetInfoCollection rss = &lt;span class="kwrd"&gt;new&lt;/span&gt; RuleSetInfoCollection();
    rss = sqlrs.GetRuleSets(rulesetname, RuleStore.Filter.Latest);
}&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;Las ventajas de utilizar una base de datos se enumeran en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las BR quedan almacenadas en forma centralizada, por lo tanto las aplicaciones que la consuman tendran siempre un repositorio único 
&lt;li&gt;Se puede utilizar el Business Rule Composer para administrar las BR, publicarlas (publish) o desplegarlas (deploy). 
&lt;li&gt;La BR puede ser invocada desde un .net assembly utilizando las clases provitas por el framework de BRE. 
&lt;li&gt;Las BR pueden ser invocadas desde orquestaciones usando &lt;a href="http://msdn2.microsoft.com/EN-US/library/aa561607.aspx"&gt;Call Rules Shapes&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Las desventajas son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El instanciamiento inicial de la BR puede ser lenta dependiendo de la conexion a la base de datos 
&lt;li&gt;Se debe tener una base de datos para el almacenamiento de las BR 
&lt;li&gt;La administracion y modificaciones a las BR tienen que hacerse por medio de un editor de BR, ejemplo el &lt;a href="http://msdn2.microsoft.com/en-us/library/ms964126.aspx"&gt;Business Rule Composer&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;En ambos casos se puede exportar facilmente una BR de un archivo xml a la base de datos y viceversa, para ello se puede utilizar&amp;nbsp;el framework de&amp;nbsp;BRE o el &lt;a href="http://msdn2.microsoft.com/en-us/library/aa547834.aspx"&gt;Business Rule Engine Deployment Wizard&lt;/a&gt; que provee BizTalk Server.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff8000" size="1"&gt;&lt;strong&gt;Autor: Carlos Medina&lt;br&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#c0c0c0" size="1"&gt;&lt;strong&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;ningun derecho&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3931270" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2004/default.aspx">Base de Conocimiento BTS 2004</category><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>Clínicas gratis para .NET 3.0</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/07/04/cl-nicas-gratis-para-net-3-0.aspx</link><pubDate>Thu, 05 Jul 2007 05:56:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3696621</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/3696621.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=3696621</wfw:commentRss><description>&lt;p&gt;Microsoft ofrece 3 clínicas para los desarrolladores y el público en general&amp;nbsp;que aún no han&amp;nbsp;incursionado el potencial de las nuevas tecnologías WCF, WPF y WF que vienen con a partir del framework 3.0 de .NET.&amp;nbsp; Estas clínicas corresponden a:&lt;/p&gt; &lt;p&gt;&lt;u&gt;Clinic 5135&lt;/u&gt;: Introduction to Developing with Windows Presentation Foundation and Visual Studio 2005&lt;/p&gt; &lt;p&gt;&lt;u&gt;Clinic 5136&lt;/u&gt;: Introduction to Developing with Windows Workflow foundation and Visual Studio 2005&lt;/p&gt; &lt;p&gt;&lt;u&gt;Clinic 5137&lt;/u&gt;: Introduction to Developing with Windows Communication Foundation and Visual Studio 2005&lt;/p&gt; &lt;p&gt;Todos los detalles del curso y subscripción al mismo&amp;nbsp;la puedes encontrar en &lt;a href="https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=127367"&gt;Collection 5134: Developing Rich Experiences with Microsoft .Net Framework 3.0 and Visual Studio 2005&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3696621" width="1" height="1"&gt;</description></item><item><title>Posters para BizTalk Server 2006</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/05/31/posters-para-biztalk-server-2006.aspx</link><pubDate>Thu, 31 May 2007 23:31:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3012681</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/3012681.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=3012681</wfw:commentRss><description>&lt;p&gt;El equipo de BizTalk Server ha publicado 3 posters que tratan sobre las caracteristicas BizTalk Server 2006, y que pueden ser utilizados como ayudas en presentaciones del producto.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Estos pueden ser descargados desde&amp;nbsp; &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=00a6472c-14df-4da8-8d77-6aa2315b5862&amp;amp;displaylang=en"&gt;Biztalk Server 2006 Capabilities&lt;/a&gt;,&amp;nbsp;&amp;nbsp;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=65ab53ce-78c1-4cc4-96fd-a492dd7f3f4a&amp;amp;displaylang=en"&gt;Biztalk Server 2006 Runtime Architecture&lt;/a&gt;&amp;nbsp;y&amp;nbsp;&amp;nbsp;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ae60b18d-c7f0-4089-aeb3-6bc652a3b898&amp;amp;displaylang=en"&gt;Biztalk Server 2006 Legacy Modernization with Host Integration Server&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font color="#ff8000" size="1"&gt;&lt;strong&gt;Autor: Carlos Medina&lt;br&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#c0c0c0" size="1"&gt;&lt;strong&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;ningun derecho&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3012681" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Entrenamiento+_2600_amp_3B00_+Recursos+BTS+2006/default.aspx">Entrenamiento &amp;amp; Recursos BTS 2006</category></item><item><title>Functoid ContextAccessor</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/05/14/functoid-contextaccessor.aspx</link><pubDate>Mon, 14 May 2007 15:05:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2623956</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/2623956.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=2623956</wfw:commentRss><description>&lt;p&gt;Esta nueva versión de ContextAccessor resume en un componente dos functoids que permiten obtener el valor de propiedades de contexto,&amp;nbsp;estos son:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;&lt;em&gt;Orchestration Context Accessor&lt;/em&gt;&lt;/strong&gt;: functoid utilizado en un mapa desde una orquestacion.  &lt;li&gt;&lt;strong&gt;&lt;em&gt;RcvPort Context Accessor&lt;/em&gt;&lt;/strong&gt;: functoid utilizado en un mapa desde un puerto de recepción&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Asi mismo, este componente contiene un Custom Pipeline Component necesario para la ejecucionde &lt;em&gt;RcvPort Context Accessor&lt;/em&gt; functoid.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;&lt;em&gt;ContextAccessorProvider&lt;/em&gt;&lt;/strong&gt;: utilizado para promover el contexto desde un pipeline hasta el mapa.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Estos functoids y el&amp;nbsp;custom pipeline component&amp;nbsp;pueden ser visualizados en el barra de herramientas (ver figura)&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ContextAccessorfunctoid_126AB/Assemblytoolbox5.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="159" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ContextAccessorfunctoid_126AB/Assemblytoolbox_thumb1.jpg" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Orchestration Context Accessor&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Este functoid se utiliza en mapas desde una orquestación y recibe 4 parámetros:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;&lt;u&gt;Primer parametro&lt;/u&gt;&lt;/em&gt;: parámetro obligatorio que contiene el nombre del mensaje&amp;nbsp;en la orquestación que contiene la propiedad de contexto.  &lt;li&gt;&lt;u&gt;&lt;em&gt;Segundo parámetro&lt;/em&gt;&lt;/u&gt;: parámetro obligatorio que contiene el nombre de la propiedad de contexto.  &lt;li&gt;&lt;u&gt;&lt;em&gt;Tercer parámetro&lt;/em&gt;&lt;/u&gt;: parámetro obligatorio que contiene el namespace perteneciente a la propiedad de contexto.  &lt;li&gt;&lt;u&gt;&lt;em&gt;Cuarto parámetro&lt;/em&gt;&lt;/u&gt;: parámetro opcional que será retornado cuando la propiedad especificada no existe en el mensaje.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ContextAccessorfunctoid_126AB/OrchFunctoid5.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="181" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ContextAccessorfunctoid_126AB/OrchFunctoid_thumb3.jpg" width="240" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;RcvPort Context Accessor&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Este functoid se utiliza en mapas desde un puerto de recepción (&lt;em&gt;Receive Port&lt;/em&gt;), y recibe&amp;nbsp;3 parámetros:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;u&gt;&lt;em&gt;Primer&amp;nbsp;parámetro&lt;/em&gt;&lt;/u&gt;: parámetro obligatorio que contiene el nombre de la propiedad de contexto.  &lt;li&gt;&lt;u&gt;&lt;em&gt;Segundo&amp;nbsp;parámetro&lt;/em&gt;&lt;/u&gt;: parámetro obligatorio que contiene el namespace perteneciente a la propiedad de contexto.  &lt;li&gt;&lt;u&gt;&lt;em&gt;Tercer&amp;nbsp;parámetro&lt;/em&gt;&lt;/u&gt;: parámetro opcional que será retornado cuando la propiedad especificada no exista en el contexto.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ContextAccessorfunctoid_126AB/RcvPortFunctoid1.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="181" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ContextAccessorfunctoid_126AB/RcvPortFunctoid.jpg" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;ContextAccessorProvider&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Este componente debe ser utilizado desde un Custom Pipeline (ver figura)&amp;nbsp;cuando se desea utilizar el &lt;em&gt;RcvPort Context Accessor&lt;/em&gt;.&amp;nbsp; El &lt;em&gt;ContextAccessorProvider&lt;/em&gt; tiene la&amp;nbsp;funcionalidad de promover el contexto utilizado en el pipeline hasta en el mapa.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ContextAccessorfunctoid_126AB/CustomPipeline1.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" src="http://blogs.msdn.com/blogfiles/biztalklatam/WindowsLiveWriter/ContextAccessorfunctoid_126AB/CustomPipeline.jpg" width="112" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;El assembly que&amp;nbsp;representa estos componentes&amp;nbsp;y el código fuente de&amp;nbsp;éste puede ser descargado desde &lt;a href="http://www.codeplex.com/ContextAccessor"&gt;http://www.codeplex.com/ContextAccessor&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font color="#ff8000" size="1"&gt;&lt;strong&gt;Autor: Carlos Medina&lt;br&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#c0c0c0" size="1"&gt;&lt;strong&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;ningun derecho&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2623956" width="1" height="1"&gt;</description></item><item><title>Error: Compiler for file type '*.btm' failed</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/05/07/error-quot-compiler-for-file-type-btm-failed-quot.aspx</link><pubDate>Tue, 08 May 2007 07:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2474101</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/2474101.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=2474101</wfw:commentRss><description>&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Sintoma&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Tu recibes el siguiente error al tratar de compilar proyectos de BizTalk Server 2006 que contienen mapas:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;Error: Build failed. Compiler for file type '*.btm' failed. Unable to load wrapper:C:\Program Files\Microsoft BizTalk Server 2006\Developer Tools\Mapper Extensions\Microsoft.BizTalk.Security.SSPI.dll.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Solución&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;El assembly &lt;STRONG&gt;&lt;EM&gt;Microsoft.BizTalk.Security.SSPI.dll&lt;/EM&gt;&lt;/STRONG&gt; está por defecto registrado en el GAC y el compilador de BizTalk Server 2006 lo carga desde allí, por lo&amp;nbsp;tanto es necesario&amp;nbsp;eliminar la copia&amp;nbsp;de éste assembly&amp;nbsp;de la carpeta &lt;STRONG&gt;&lt;EM&gt;%install_bts%\Developer Tools\Mapper Extensions\&lt;/EM&gt;&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff8000 size=1&gt;&lt;STRONG&gt;Autor: Carlos Medina&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT color=#c0c0c0 size=1&gt;&lt;STRONG&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;ningun derecho&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2474101" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/Base+de+Conocimiento+BTS+2006/default.aspx">Base de Conocimiento BTS 2006</category></item><item><title>¿Estás buscando trabajo? Microsoft te ayuda...</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/04/27/iquest-est-aacute-s-buscando-trabajo-microsoft-te-ayuda.aspx</link><pubDate>Sat, 28 Apr 2007 07:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2308133</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/2308133.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=2308133</wfw:commentRss><description>&lt;P&gt;Microsoft ha realizado una alianza con &lt;A href="http://www.laborum.com/" mce_href="http://www.laborum.com"&gt;www.laborum.com&lt;/A&gt; para crear una bolsa de trabajo para la Región Andina (esto es Colombia, Ecuador, Perú y Venezuela)&amp;nbsp;dirigida a&amp;nbsp;aquellas personas IT Pros que están en busca de empleo o que quieren mejorar el actual.&lt;/P&gt;
&lt;P&gt;Pueden encontrar más información en la siguiente nota de &lt;A href="http://blogs.technet.com/guillermotaylor/archive/2007/04/27/est-s-buscando-trabajo-microsoft-te-ayuda.aspx" mce_href="http://blogs.technet.com/guillermotaylor/archive/2007/04/27/est-s-buscando-trabajo-microsoft-te-ayuda.aspx"&gt;Guillermo Taylor&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#c0c0c0 size=1&gt;&lt;STRONG&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;ningun derecho&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2308133" width="1" height="1"&gt;</description></item><item><title>Propiedad IncludeExceptionDetailInFaults en WCF</title><link>http://blogs.msdn.com/biztalklatam/archive/2007/04/26/propiedad-includeexceptiondetailinfaults-en-wcf.aspx</link><pubDate>Thu, 26 Apr 2007 23:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2289744</guid><dc:creator>BizTalkLATAM</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/biztalklatam/comments/2289744.aspx</comments><wfw:commentRss>http://blogs.msdn.com/biztalklatam/commentrss.aspx?PostID=2289744</wfw:commentRss><description>&lt;P&gt;La propiedad &lt;A href="http://msdn2.microsoft.com/en-us/library/system.servicemodel.description.servicedebugbehavior.includeexceptiondetailinfaults.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.servicemodel.description.servicedebugbehavior.includeexceptiondetailinfaults.aspx"&gt;IncludeExceptionDetailInFaults&lt;/A&gt; es utilizada&amp;nbsp;para habilitar&amp;nbsp;a los servicios de WCF el envio de informacion&amp;nbsp;detallada&amp;nbsp;cuando una excepcion ocurre en objetos SOAP fault&amp;nbsp;hacia el cliente.&amp;nbsp;&amp;nbsp;El propósito de esta acción, es brindarle al&amp;nbsp;cliente más información&amp;nbsp;en&amp;nbsp;pruebas de la aplicación.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Por defecto, el&amp;nbsp;valor de esta propiedad es &lt;EM&gt;&lt;STRONG&gt;false&lt;/STRONG&gt;&lt;/EM&gt; por motivos de seguridad.&amp;nbsp; Sin embargo existen varias formas de cambiar este valor las cuales se ejemplarizan a continuación:&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Utilizando .config&amp;nbsp;&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Esta es&amp;nbsp;la forma más utilizada por&amp;nbsp;su comodidad&amp;nbsp;ya que&amp;nbsp;basta con editar el archivo de configuración del servicio WCF y especificar al atributo &lt;A href="http://msdn2.microsoft.com/en-us/library/ms788993.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms788993.aspx"&gt;includeExceptionDetailInFaults&lt;/A&gt;&amp;nbsp;el valor &lt;EM&gt;&lt;STRONG&gt;true&lt;/STRONG&gt;&lt;/EM&gt;.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Al hacer esta operación, todos los endpoints relacionados al servicio enviarán información detallada de errores en cualquier momento.&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;system.serviceModel&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;services&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;service&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"BizTalkLATAM.WCF.DebugService"&lt;/SPAN&gt;
             &lt;SPAN style="COLOR: #ff0000"&gt;behaviorConfiguration&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"DebugServiceConfiguration"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;service&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;services&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;behaviors&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;serviceBehaviors&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;behavior&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"DebugServiceConfiguration"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;serviceDebug&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;includeExceptionDetailInFaults&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"true"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;
      &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;behavior&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;serviceBehaviors&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;behaviors&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;system.serviceModel&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Utilizando código&amp;nbsp;&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;También es posible habilitar esta propiedad utilizando código, para&amp;nbsp;esto existen dos&amp;nbsp;formas.&amp;nbsp; La primera es&amp;nbsp;especificando la propiedad &lt;A href="http://msdn2.microsoft.com/en-us/library/aa344789.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa344789.aspx"&gt;IncludeExceptionDetailInFaults&lt;/A&gt;&amp;nbsp;con el valor de true en el atributo &lt;A href="http://msdn2.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.aspx"&gt;ServiceBehaviorAttribute&lt;/A&gt; aplicado a la clase que representa el servicio.&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;[ServiceContract(Namespace="&lt;SPAN style="COLOR: #8b0000"&gt;http://wcf.biztalklatam.com/debug/&lt;/SPAN&gt;")]
[ServiceBehavior(IncludeExceptionDetailInFaults=&lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;)]
&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; DebugService
{ }&lt;/PRE&gt;
&lt;P&gt;La segunda forma es&amp;nbsp;estableciendo el valor de&amp;nbsp;la propiedad &lt;A href="http://msdn2.microsoft.com/en-us/library/system.servicemodel.description.servicedebugbehavior.includeexceptiondetailinfaults.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.servicemodel.description.servicedebugbehavior.includeexceptiondetailinfaults.aspx"&gt;IncludeExceptionDetailInFaults&lt;/A&gt; en &lt;STRONG&gt;&lt;EM&gt;true&lt;/EM&gt;&lt;/STRONG&gt; antes de invocar el metodo &lt;A href="http://msdn2.microsoft.com/en-us/library/ms195568.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms195568.aspx"&gt;Open()&lt;/A&gt; del servicio, esto sin necesidad de especificar el atributo &lt;A href="http://msdn2.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.aspx"&gt;ServiceBehaviorAttribute&lt;/A&gt; a la clase que representa el servicio.&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;[ServiceContract(Namespace="&lt;SPAN style="COLOR: #8b0000"&gt;http://wcf.biztalklatam.com/debug/&lt;/SPAN&gt;")] &lt;BR&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; DebugService 
{ } 
&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; (ServiceHost host = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; ServiceHost(&lt;SPAN style="COLOR: #0000ff"&gt;typeof&lt;/SPAN&gt;(DebugService)))
{
    ServiceDescription svcDesc = host.Description.Behaviors;
    ServiceDebugBehavior svcDebug = svcDesc.Behaviors.Find&amp;lt;ServiceDebugBehavior&amp;gt;();
    svcDebug.IncludeExceptionDetailInFaults = &lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;;
    host.Open();
}&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Habilitando parcialmente&amp;nbsp;la propiedad&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Las técnicas anteriormente vistas habilitan la&amp;nbsp;propiedad &amp;nbsp;&lt;EM&gt;IncludeExceptionDetailInFaults&lt;/EM&gt; para todos los endpoints de un servicio, pero cómo hacer si solo un endpoint se desea habilitar para ello?&lt;/P&gt;
&lt;P&gt;En el siguiente ejemplo se utilizan dos endpoints: &lt;STRONG&gt;&lt;EM&gt;debug1&lt;/EM&gt;&lt;/STRONG&gt; y &lt;STRONG&gt;&lt;EM&gt;debug2&lt;/EM&gt;&lt;/STRONG&gt;, de acuerdo al atributo &lt;EM&gt;&lt;STRONG&gt;bindingName&lt;/STRONG&gt;&lt;/EM&gt;.&amp;nbsp; Y se requiere que el endpoint &lt;STRONG&gt;&lt;EM&gt;debug1&lt;/EM&gt;&lt;/STRONG&gt; envie información detallada en el momento de una excepción pero &lt;STRONG&gt;&lt;EM&gt;debug2&lt;/EM&gt;&lt;/STRONG&gt; no.&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;system.serviceModel&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp; &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;services&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;service&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"BizTalkLATAM.WCF.DebugService"&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR: #ff0000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; behaviorConfiguration&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"DebugServiceConfiguration"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;endpoint&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;address&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"net.tcp://localhost:8009/wcf/debugep1"&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #ff0000"&gt;binding&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"netTcpBinding"&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #ff0000"&gt;bindingName&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"debug1"&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #ff0000"&gt;bindingNamespace&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"http://wcf.biztalklatam.com/binding/"&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #ff0000"&gt;contract&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"BizTalkLATAM.WCF.DebugService"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;endpoint&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;address&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"net.tcp://localhost:8009/wcf/debugep2"&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #ff0000"&gt;binding&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"netTcpBinding"&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #ff0000"&gt;bindingName&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"debug2"&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #ff0000"&gt;bindingNamespace&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"http://wcf.biztalklatam.com/binding/"&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #ff0000"&gt;contract&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"BizTalkLATAM.WCF.DebugService"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;service&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;behaviors&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;serviceBehaviors&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;behavior&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;name&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"DebugServiceConfiguration"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;serviceDebug&lt;/SPAN&gt; &lt;SPAN style="COLOR: #ff0000"&gt;includeExceptionDetailInFaults&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #0000ff"&gt;"false"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;/&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;behavior&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;serviceBehaviors&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;behaviors&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; &lt;BR&gt;&amp;nbsp; &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;services&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;system.serviceModel&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Luego de definir el archivo de configuración, se debe cambiar el valor de la propiedad &lt;EM&gt;IncludeExceptionDetailInFaults&lt;/EM&gt; a &lt;STRONG&gt;&lt;EM&gt;true&lt;/EM&gt;&lt;/STRONG&gt; al endpoint &lt;STRONG&gt;&lt;EM&gt;debug1&lt;/EM&gt;&lt;/STRONG&gt;.&amp;nbsp; Para esto es necesario buscar en la colección &lt;A href="http://msdn2.microsoft.com/en-us/library/ms576011.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms576011.aspx"&gt;ChannelDispatchers&lt;/A&gt; del servicio WCF el &lt;A href="http://msdn2.microsoft.com/en-us/library/ms522338.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms522338.aspx"&gt;ChannelDispatcher&lt;/A&gt; que representa el endpoint &lt;STRONG&gt;&lt;EM&gt;debug1&lt;/EM&gt;&lt;/STRONG&gt;, esto se logra fácilmente usando la propiedad &lt;A href="http://msdn2.microsoft.com/en-us/library/ms557142.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms557142.aspx"&gt;ChannelDispatcher.BindingName&lt;/A&gt;.&amp;nbsp; Una vez localizado el endpoint, se cambia la propiedad &lt;EM&gt;IncludeExceptionDetailInFaults&lt;/EM&gt; a &lt;EM&gt;&lt;STRONG&gt;true&lt;/STRONG&gt;&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;Ya que modificar la propiedad &lt;A href="http://msdn2.microsoft.com/en-us/library/aa345698.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa345698.aspx"&gt;IncludeExceptionDetailInFaults&lt;/A&gt; en un objeto tipo &lt;A href="http://msdn2.microsoft.com/en-us/library/ms522338.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms522338.aspx"&gt;ChannelDispatcher&lt;/A&gt; solo se puede hacer cuando el objeto se encuenta en un estado &lt;A href="http://msdn2.microsoft.com/en-us/library/system.servicemodel.communicationstate.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.servicemodel.communicationstate.aspx"&gt;Created&lt;/A&gt;, es necesario implementar una nueva clase que derive de la interfaz &lt;A href="http://msdn2.microsoft.com/en-us/library/ms599118.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms599118.aspx"&gt;IServiceBehavior&lt;/A&gt;&amp;nbsp;e implementar el código correspondiente a la modificación de la propiedad en el método &lt;A href="http://msdn2.microsoft.com/en-us/library/ms576779.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms576779.aspx"&gt;ApplyDispatchBehavior&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Posteriormente se establece&amp;nbsp;el nuevo atributo&amp;nbsp;a la clase que representa el servicio WCF.&lt;/P&gt;&lt;PRE&gt;[ServiceContract(Namespace = "&lt;SPAN style="COLOR: #8b0000"&gt;http://wcf.biztalklatam.com/debug/&lt;/SPAN&gt;")]
[CustomDebugBehavior]
&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; DebugService
{ }

&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; CustomDebugBehaviorAttribute : Attribute, IServiceBehavior
{
    #region IServiceBehavior Members
    &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, 
        System.Collections.ObjectModel.Collection&amp;lt;ServiceEndpoint&amp;gt; endpoints, 
        System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
    {
        &lt;SPAN style="COLOR: #008000"&gt;// sin implementar&lt;/SPAN&gt;
    }

    &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
    {
        &lt;SPAN style="COLOR: #0000ff"&gt;foreach&lt;/SPAN&gt; (ChannelDispatcher cd &lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt; serviceHostBase.ChannelDispatchers)
            &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (cd.BindingName.Equals("&lt;SPAN style="COLOR: #8b0000"&gt;http://wcf.biztalklatam.com/binding/:debug1&lt;/SPAN&gt;"))
                cd.IncludeExceptionDetailInFaults = &lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;;
    }

    &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
    {
        &lt;SPAN style="COLOR: #008000"&gt;// sin implementar&lt;/SPAN&gt;
    }
    #endregion
}&lt;/PRE&gt;
&lt;P&gt;Por último se inicia el servicio WCF en forma normal:&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; (ServiceHost host = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; ServiceHost(&lt;SPAN style="COLOR: #0000ff"&gt;typeof&lt;/SPAN&gt;(DebugService))) {
 host.Open();
 ...
}
&lt;/PRE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;La propiedad &lt;STRONG&gt;&lt;EM&gt;IncludeExceptionDetailInFaults&lt;/EM&gt;&lt;/STRONG&gt; nos ayuda en&amp;nbsp;pruebas a encontrar mas información acerca de errores,&amp;nbsp;pero se aconseja &lt;STRONG&gt;&lt;U&gt;deshabilitarla&lt;/U&gt;&lt;/STRONG&gt;&amp;nbsp;para producción.&amp;nbsp; Sin embargo, es posible utilizar algun tipo de habilitación parcial de un endpoint para dejar habilitado en producción y en caso de error poder obtener mas información.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000 size=1&gt;Autor: Carlos Medina&lt;BR&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT color=#c0c0c0 size=1&gt;&lt;STRONG&gt;Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no otorga&amp;nbsp;ningun derecho&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2289744" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/biztalklatam/archive/tags/WCF/default.aspx">WCF</category></item></channel></rss>