<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.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>Supporto Tecnico Enterprise</title><link>http://blogs.technet.com/b/itasupport/</link><description /><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Meccanismi di risoluzione DNS quando molteplici DNS server sono configurati su un client</title><link>http://blogs.technet.com/b/itasupport/archive/2013/05/18/meccanismi-di-risoluzione-dns-quando-molteplici-dns-server-sono-configurati-su-un-client.aspx</link><pubDate>Fri, 17 May 2013 22:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3573319</guid><dc:creator>Supporto Tecnico Enterprise Italia</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/itasupport/rsscomments.aspx?WeblogPostID=3573319</wfw:commentRss><comments>http://blogs.technet.com/b/itasupport/archive/2013/05/18/meccanismi-di-risoluzione-dns-quando-molteplici-dns-server-sono-configurati-su-un-client.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Ciao a tutti!&lt;/p&gt;  &lt;p&gt;Un pò di tempo fa avevamo parlato di DNS client &lt;a href="http://blogs.technet.com/b/itasupport/archive/2012/04/30/windows-2008-dns-client-overview.aspx"&gt;in questo post&lt;/a&gt;, approfondendo i vari meccanismi di gestione della client cache e dei vari meccanismi di risoluzione record tramite suffissi quando era necessario andare ad interrogare un server DNS. Le cose però come sempre nel mondo reale sono un pò più complesse :)&lt;/p&gt;  &lt;p&gt;Sicuramente infatti vi sarete trovati almeno una volta a configurare due o più server DNS da far utilizzare al vostro client dalle proprietà della scheda di rete o da uno scope DHCP:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/6646.image_5F00_11E87521.png"&gt;&lt;img title="image" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/3058.image_5F00_thumb_5F00_283E1A66.png" width="418" height="466" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ma vi siete mai chiesti come funziona il meccanismo con cui i diversi server vengono utilizzati? è importante sapere che più server aggiungiamo alla lista, più aumentiamo le probabilità che la nostra query sia risolta. Ma dobbiamo tenere presente anche che se aggiungiamo più server, cambierà anche la modalità con la quale effettuiamo le query. Ma andiamo subito a vedere in dettaglio i vari scenari.    &lt;br /&gt;&lt;/p&gt;  &lt;h2&gt;Qual è il comportamento di default di un client DNS quando è configurato un solo DNS server ?&lt;/h2&gt;  &lt;p&gt;Il comportamento è il seguente (testato su Windows XP, Windows 7 e Windows 8 con una sola scheda di rete)&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="607" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Tempo (secondi dall’inizio della query)&lt;/td&gt;        &lt;td valign="top" width="405"&gt;         &lt;p align="left"&gt;Azione eseguita&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;0&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Client effettua una query verso il server DNS&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;1&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 1 secondo, il client effettua una nuova query verso il server DNS&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;2&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 1 ulteriore secondo, il client effettua una nuova query verso il server DNS&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;4&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 2 ulteriori secondi, il client effettua una nuova query verso il server DNS&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;8&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 4 ulteriori secondi, il client effettua una nuova query verso il server DNS&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;10&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 2 ulteriori secondi, il client smette di effettuare query&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;&lt;u&gt;Nota bene:&lt;/u&gt; ogni risposta di “Name Error” o “Server Failure” ricevuta da parte del server determinerà lo stop del processo: il client non riproverà a fare la query se ha ricevuto una risposta negativa ma solo se non ha ottenuto alcuna risposta.&lt;/p&gt;  &lt;p&gt;In questo semplice scenario, il client esegue 5 query verso il singolo DNS server prima di stopparsi.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Esempio:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Ipconfig sul client&lt;/p&gt;  &lt;p&gt;&lt;em&gt;IPv4 Address. . . . . . . . . . . : 10.0.0.31(Preferred)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;DNS Servers . . . . . . . . . . . :&amp;#160; 10.0.0.1&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Estratto di una trace di rete (Network Monitor)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/1348.image_5F00_5385421E.png"&gt;&lt;img title="image" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/5483.image_5F00_thumb_5F00_70FA23DB.png" width="601" height="93" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Qual è il comportamento di default di un client DNS Windows XP quando sono configurati 2 DNS server ?&lt;/h2&gt;  &lt;p&gt;Il comportamento è il seguente (testato su client Windows XP con una sola scheda di rete)&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="607" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Tempo (secondi dall’inizio della query)&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Azione eseguita&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;0&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Client effettua una query verso il primo server della lista&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;1&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 1 secondo, il client effettua una nuova query verso il secondo server DNS e in contemporanea ritenta una query verso il server primario&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;3&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 2 ulteriori secondi, il client effettua una nuova query verso il server DNS primario&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;7&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 4 ulteriori secondi, il client effettua una nuova query verso il server DNS primario&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;9&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 2 ulteriori secondi, il client smette di effettuare query&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160; &lt;br /&gt;&lt;u&gt;Nota bene:&lt;/u&gt; ogni risposta di “Name Error” o “Server Failure” ricevuta da parte del server determinerà lo stop del processo: il client non riproverà a fare la query se ha ricevuto una risposta negativa ma solo se non ha ottenuto alcuna risposta.&lt;/p&gt;  &lt;p&gt;In questo scenario, il client cerca di contattare prevalentemente il server primario, mentre utilizza il secondario una sola volta.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Esempio:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Ipconfig sul client&lt;/p&gt;  &lt;p&gt;&lt;em&gt;IPv4 Address. . . . . . . . . . . : 10.0.0.31(Preferred)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;DNS Servers . . . . . . . . . . . :&amp;#160; 10.0.0.1      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10.0.0.2&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Estratto di una trace di rete (Network Monitor)&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/3022.image_5F00_20B7CC5B.png"&gt;&lt;img title="image" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/6518.image_5F00_thumb_5F00_0D969FAF.png" width="597" height="88" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h2&gt;&amp;#160;&lt;/h2&gt;  &lt;h2&gt;Qual è il comportamento di default di un client DNS Windows 7 o Windows 8 quando sono configurati 2 DNS server ?&lt;/h2&gt;  &lt;p&gt;Il comportamento è il seguente (testato su client Windows 7 e Windows 8 con una sola scheda di rete)&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="607" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Tempo (secondi dall’inizio della query)&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Azione eseguita&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;0&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Client effettua una query verso il primo server della lista&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;1&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 1 secondo, il client effettua una nuova query verso il secondo server DNS&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;2&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 1 ulteriore secondo, il client effettua una nuova query verso il secondo server DNS&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;4&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 2 ulteriori secondi, il client effettua una nuova query verso tutti i server della lista in contemporanea&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;8&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 4 ulteriori secondi, il client effettua una nuova query verso tutti i server della lista in contemporanea&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;10&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 2 ulteriori secondi, il client smette di effettuare query&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;&lt;u&gt;Nota bene:&lt;/u&gt; ogni risposta di “Name Error” o “Server Failure” ricevuta da parte del server determinerà lo stop del processo: il client non riproverà a fare la query se ha ricevuto una risposta negativa ma solo se non ha ottenuto alcuna risposta.&lt;/p&gt;  &lt;p&gt;Il client tenta di utilizzare nuovi server solo se gli altri sono irraggiungibili.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Esempio:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Ipconfig sul client&lt;/p&gt;  &lt;p&gt;&lt;em&gt;IPv4 Address. . . . . . . . . . . : 10.0.0.31(Preferred)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;DNS Servers . . . . . . . . . . . :&amp;#160; 10.0.0.1      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10.0.0.2&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Estratto di una trace di rete (Network Monitor)&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/2728.image_5F00_6B419AE6.png"&gt;&lt;img title="image" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/6472.image_5F00_thumb_5F00_33FB13AB.png" width="599" height="115" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Qual è il comportamento di default di un client DNS quando sono configurati 3 o più DNS server ?&lt;/h2&gt;  &lt;p&gt;Quanti e quali di loro sono utilizzati?&lt;/p&gt;  &lt;p&gt;Il comportamento è il seguente (testato su client Windows XP, Windows 7 e Windows 8 con una sola scheda di rete)&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="607" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Tempo (secondi dall’inizio della query)&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Azione eseguita&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;0&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Client effettua una query verso il primo server della lista&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;1&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 1 secondo, il client effettua una nuova query verso il secondo server DNS&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;2&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 1 secondo, il client effettua una nuova query verso il terzo server DNS&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;4&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 2 ulteriori secondi, il client effettua una nuova query verso tutti i server della lista in contemporanea&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;8&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 4 ulteriori secondi, il client effettua una nuova query verso tutti i server della lista in contemporanea&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;10&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Se nessuna risposta è stata ricevuta dopo 2 ulteriori secondi, il client smette di effettuare query&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Nota bene:&lt;/u&gt; ogni risposta di “Name Error” o “Server Failure” ricevuta da parte del server determinerà lo stop del processo: il client non riproverà a fare la query se ha ricevuto una risposta negativa ma solo se non ha ottenuto alcuna risposta.&lt;/p&gt;  &lt;p&gt;Il client tenta di utilizzare nuovi server solo se gli altri sono irraggiungibili.&lt;/p&gt;  &lt;p&gt;Se quindi ci aspettiamo di ottenere la risposta da un server in quarta posizione, abbiamo un ritardo annunciato di almeno 4 secondi dopo la query originale. Questo può causare problemi nel caso in cui l’applicazione che ha invocato la query abbia un timeout inferiore a questo valore. L’unico modo per risolvere il problema è impostare il server DNS corretto in una delle prime 3 posizioni.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Esempio:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Windows 8 Client configurato con cinque server DNS, che effettua una query per Microsoft.com&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Ipconfig sul client&lt;/p&gt;  &lt;p&gt;&lt;em&gt;IPv4 Address. . . . . . . . . . . : 10.0.0.31(Preferred)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;DNS Servers . . . . . . . . . . . :&amp;#160; 10.0.0.1      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10.0.0.2       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10.0.0.3       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10.0.0.4       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10.0.0.5&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Estratto di una trace di rete (Network Monitor)&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/7418.image_5F00_2AA1DF28.png"&gt;&lt;img title="image" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/0511.image_5F00_thumb_5F00_6EE4D725.png" width="600" height="195" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Info aggiuntive:&lt;/p&gt;  &lt;p&gt;Se sul client ci sono due schede di rete, entrambe configurate con DNs server differenti il meccanismo è leggermente diverso ed è descritto in questo blog post:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/b/networking/archive/2009/06/26/dns-client-resolver-behavior.aspx"&gt;http://blogs.technet.com/b/networking/archive/2009/06/26/dns-client-resolver-behavior.aspx&lt;/a&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Grazie a tutti e alla prossima!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/b/itasupport/archive/2010/08/30/stefano-gagliardi.aspx"&gt;Stefano Gagliardi&lt;/a&gt;     &lt;br /&gt;Sr. Support Engineer     &lt;br /&gt;Microsoft Enterprise Platform Support&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3573319" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Windows+Team/">Windows Team</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Windows+Server+2008+R2/">Windows Server 2008 R2</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Stefano+Gagliardi/">Stefano Gagliardi</category></item><item><title>DNS forwarders e Conditional forwarders</title><link>http://blogs.technet.com/b/itasupport/archive/2013/05/18/dns-forwarders-e-conditional-forwarders.aspx</link><pubDate>Fri, 17 May 2013 22:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3573320</guid><dc:creator>Supporto Tecnico Enterprise Italia</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/itasupport/rsscomments.aspx?WeblogPostID=3573320</wfw:commentRss><comments>http://blogs.technet.com/b/itasupport/archive/2013/05/18/dns-forwarders-e-conditional-forwarders.aspx#comments</comments><description>&lt;p&gt;Ciao a tutti!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cambiarelink"&gt;Nel precedente post&lt;/a&gt; abbiamo parlato di come funzionano i meccanismi di risoluzione DNS quando molteplici server DNS sono configurati su di un client. Oggi andremo a vedere come funziona invece quando molteplici forwarders o conditional forwarders sono configurati su di un DNS server.&lt;/p&gt;  &lt;p&gt;Partiamo da una brevissima descrizione teorica:&lt;/p&gt;  &lt;p&gt;Quando un client chiede ad un server DNS di risolvere un nome per una zona a lui sconosciuta, il server si deve organizzare per andare a recuperare la risposta da un ulteriore server DNS. Per questo fine possiamo utilizzare i &lt;strong&gt;Forwarders&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/2308.image_5F00_4BB739A2.png"&gt;&lt;img title="image" style="margin: 0px; border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/8524.image_5F00_thumb_5F00_0B83B0D9.png" width="591" height="370" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Un Forwarder non è altro che un server DNS al quale il nostro server di riferimento inoltra la query del client (passi 1-2 in figura). Il forwarder stesso poi può conoscere la risposta alla query, o può doverla richiedere ad altri in modo ricorsivo (passi 3-4). Quello che è importante è che alla fine del processo il Forwarder sia in grado di restituire la risposta al nostro server (5) che la inoltrerà al client (6).&lt;/p&gt;  &lt;p&gt;I &lt;strong&gt;Conditional Forwarders&lt;/strong&gt; funzionano in modo del tutto analogo, ma sono specifici delle zone per cui si effettuano le query. Il server quindi può indirizzare, in base a quale sia la richiesta del client, la query verso uno (o più) conditional forwarders specifici.&lt;/p&gt;  &lt;p&gt;Ovviamente, così come per i client, anche in questi casi è bene configurare più di un singolo forwarder/conditional forwarder per evitare problemi di risoluzione in caso di problemi di connettività o di server down.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.google.it/url?sa=i&amp;amp;rct=j&amp;amp;q=forwarder+site:microsoft.com&amp;amp;source=images&amp;amp;cd=&amp;amp;cad=rja&amp;amp;docid=5-KA9kw8U395VM&amp;amp;tbnid=xtF55XYbQkeKaM:&amp;amp;ved=0CAUQjRw&amp;amp;url=http%3A%2F%2Ftechnet.microsoft.com%2Fen-us%2Flibrary%2Fcc757172(v%3Dws.10).aspx&amp;amp;ei=J1NYUcuOJsbYPamUgegC&amp;amp;bvm=bv.44442042,d.ZWU&amp;amp;psig=AFQjCNE-ytKKQln5xuxa-_GyGi6EuISVTA&amp;amp;ust=1364829343933258"&gt;&lt;img style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" src="http://i.technet.microsoft.com/dynimg/IC195402.gif" width="492" height="225" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Qual è il comportamento di default di un server DNS quando due o più DNS server sono configurati come Forwarders? &lt;/h2&gt;  &lt;p&gt;è bene tenere in considerazione due importanti variabili:&lt;/p&gt;  &lt;p&gt;- &lt;strong&gt;RecursionTimeout      &lt;br /&gt;&lt;/strong&gt;”quanto tempo il DNS server rimane in attesa di risposte da altri server prima di terminare la ricerca”&lt;/p&gt;  &lt;p&gt;Il parametro è salvato nel registro sotto:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;e configurabile tramite il comando:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;dnscmd /config /RecursionTimeout &amp;lt;&lt;em&gt;valore&lt;/em&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Il valore di default è:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;15 secondi su Windows Server 2003      &lt;br /&gt;8 secondi su Windows Server 2008, 2008R2 e 2012&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Il RecursionTimeout è definito a livello server ed è indipendente dalla specifica zona per cui si sta effettuando la query&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;- &lt;strong&gt;ForwardingTimeout      &lt;br /&gt;&lt;/strong&gt;”quanto tempo il DNS server rimane in attesa di uno specifico Forwarder”&lt;/p&gt;  &lt;p&gt;Il parametro è salvato nel registro sotto:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\ForwardingTimeout&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;e configurabile tramite il comando:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;dnscmd /config /ForwardingTimeout &amp;lt;&lt;em&gt;valore&lt;/em&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Il valore di default è:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;5 secondi su Windows Server 2003      &lt;br /&gt;3 secondi su Windows Server 2008, 2008R2 e 2012&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Il ForwardingTimeout è definito a livello server ed è indipendente dalla specifica zona per cui si sta effettuando la query&lt;/p&gt;  &lt;p&gt;Questo parametro è quello che possiamo vedere dalla interfaccia grafica dei Forwarders:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/8055.image_5F00_5679B259.png"&gt;&lt;img title="image" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/6837.image_5F00_thumb_5F00_4CB44AE1.png" width="536" height="440" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Quando il server DNS riceve una query per un record in una zona per cui non è autoritativo e necessita di usare i forwarders, il comportamento è il seguente:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="607" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Tempo (secondi dall’inizio della query)&lt;/td&gt;        &lt;td valign="top" width="405"&gt;         &lt;p align="left"&gt;Azione eseguita&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;0&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Client effettua una query verso il server DNS. Server DNS inoltra la query immediatamente verso il primo forwarder.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&amp;lt;forwarding_timeout&amp;gt;&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Dopo &amp;lt;forwarding_timeout&amp;gt; secondi, se il primo forwarder non ha risposto, il server DNS inoltra la query verso il secondo forwarder&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;2 * &amp;lt;forwarding_timeout&amp;gt; +1&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Dopo &amp;lt;forwarding_timeout&amp;gt; +1 ulteriori secondi, se il secondo forwarder non ha risposto, il server DNS inoltra la query verso il terzo forwarder&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;...&lt;/td&gt;        &lt;td valign="top" width="405"&gt;...&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;N * &amp;lt;forwarding_timeout&amp;gt; +(N-1)&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Dopo &amp;lt;forwarding_timeout&amp;gt; +1 ulteriori secondi, se l’N-esimo forwarder non ha risposto, il server DNS inoltra la query verso il N+1 esimo forwarder&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Nota: in aggiunta al ritardo configurato può esserci un ulteriore ritardo di 0.5 secondi&lt;/p&gt;  &lt;p&gt;L’algoritmo si ferma quando il tempo trascorso supera il valore di RecursionTimeout.    &lt;br /&gt;Se scade il RecursionTimeout il DNS server risponde al client con un messaggio di “Server Failure”. Questo messaggio non è inviato immediatamente dopo la scadenza del timeout, ma solo quando arriverà il momento di contattare il forwarder successivo.&lt;/p&gt;  &lt;p&gt;Se il server finisce di contattare tutti i forwarders prima che sia scaduto il RecursionTimeout senza ottenere risposte, proverà ad usare i Root Hints.&lt;/p&gt;  &lt;p&gt;Questo significa che, con default settings, un DNS Windows Server 2008 R2 sarà in grado di contattare al massimo 3 forwarders. Non ci sarà tempo sufficiente per arrivare ad usare il quarto. Infatti in base ai valori di default il server:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Contatterà il primo forwarder dopo 0 secondi&lt;/li&gt;    &lt;li&gt;Contatterà il secondo forwarder dopo 3.5 secondi&lt;/li&gt;    &lt;li&gt;Contatterà il terzo forwarder dopo 3.5 + 4 = 7.5 secondi&lt;/li&gt;    &lt;li&gt;Dopo 8 secondi scadrà RecursionTimeout &lt;/li&gt;    &lt;li&gt;Dopo 3.5 + 4 + 4 = 11.5 secondi (quando sarebbe stato tempo di contattare il quarto forwarder) il server risponderà “server failure” al client.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Esempio:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;DNS server con IP address 10.10.10.10 e configurato con 5 forwarders (10.0.0.1-10.0.0.5).&lt;/p&gt;  &lt;p&gt;Client ha IP address 10.0.0.8&lt;/p&gt;  &lt;p&gt;In una cattura di rete vedremmo il seguente comportamento (notare 10.0.0.4 e 10.0.0.5 mai interrogati):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/1513.image_5F00_42EEE369.png"&gt;&lt;img title="image" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/6646.image_5F00_thumb_5F00_3276726E.png" width="805" height="93" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Qual è il comportamento di default di un server DNS quando due o più DNS server sono configurati come Conditional Forwarders? &lt;/h2&gt;  &lt;p&gt;Similmente al caso dei Forwarders, abbiamo due variabili in gioco. C’è ancora &lt;strong&gt;RecursionTimeout&lt;/strong&gt; (a livello server) ma in questo caso utilizziamo &lt;strong&gt;ForwarderTimeout&lt;/strong&gt; anzichè ForwardingTimeout. Oltre alla sottile differenza nel nome, la grande differenza è che ForwarderTimeout opera a livello di zona ed ha diversi valori di default.&lt;/p&gt;  &lt;p&gt;- &lt;strong&gt;RecursionTimeout      &lt;br /&gt;&lt;/strong&gt;”quanto tempo il DNS server rimane in attesa di risposte da altri server prima di terminare la ricerca”&lt;/p&gt;  &lt;p&gt;Il parametro è salvato nel registro sotto:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout &lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;e configurabile tramite il comando:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;dnscmd /config /RecursionTimeout &amp;lt;&lt;em&gt;valore&lt;/em&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Il valore di default è:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;15 secondi su Windows Server 2003      &lt;br /&gt;8 secondi su Windows Server 2008, 2008R2 e 2012&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Il RecursionTimeout è definito a livello server ed è indipendente dalla specifica zona per cui si sta effettuando la query&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;- &lt;strong&gt;ForwarderTimeout      &lt;br /&gt;&lt;/strong&gt;”quanto tempo il DNS server rimane in attesa di uno specifico Conditional Forwarder”&lt;/p&gt;  &lt;p&gt;Poichè i Conditional Forwarders sono configurati per specifiche zone DNS, anche ForwarderTimeout è zone-dependent. &lt;/p&gt;  &lt;p&gt;Il parametro è salvato nel registro sotto:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\DNS Server\Zones\ &amp;lt;&lt;em&gt;nome_zona&lt;/em&gt;&amp;gt;\ForwarderTimeout&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Il valore di default è 5 secondi su Windows Server 2003, 2008, 2008R2 e 2012&lt;/p&gt;  &lt;p&gt;Questo parametro è quello che possiamo vedere dalla interfaccia grafica dei Conditional Forwarders:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/4520.image_5F00_36EF83E6.png"&gt;&lt;img title="image" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/7282.image_5F00_thumb_5F00_5B176F26.png" width="536" height="438" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Quando il server DNS riceve una query per un record in una zona per cui non è autoritativo e necessita di usare i conditional forwarders, il comportamento è il seguente:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="607" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Tempo (secondi dall’inizio della query)&lt;/td&gt;        &lt;td valign="top" width="405"&gt;         &lt;p align="left"&gt;Azione eseguita&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;0&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Client effettua una query verso il server DNS. Server DNS inoltra la query immediatamente verso il primo conditional forwarder.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&amp;lt;forwarder_timeout&amp;gt;&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Dopo &amp;lt;forwarder_timeout&amp;gt; secondi, se il primo conditional forwarder non ha risposto, il server DNS inoltra la query verso il secondo conditional forwarder&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;2 * &amp;lt;forwarder_timeout&amp;gt; +1&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Dopo &amp;lt;forwarder_timeout&amp;gt; +1 ulteriori secondi, se il secondo conditional forwarder non ha risposto, il server DNS inoltra la query verso il terzo conditional forwarder&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;...&lt;/td&gt;        &lt;td valign="top" width="405"&gt;...&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;N * &amp;lt;forwarder_timeout&amp;gt; +(N-1)&lt;/td&gt;        &lt;td valign="top" width="405"&gt;Dopo &amp;lt;forwarder_timeout&amp;gt; +1 ulteriori secondi, se l’N-esimo conditional forwarder non ha risposto, il server DNS inoltra la query verso il N+1 esimo conditional forwarder&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Nota: in aggiunta al ritardo configurato può esserci un ulteriore ritardo di 0.5 secondi&lt;/p&gt;  &lt;p&gt;L’algoritmo si ferma quando il tempo trascorso supera il valore di RecursionTimeout.    &lt;br /&gt;Se scade il RecursionTimeout il DNS server risponde al client con un messaggio di “Server Failure”. Questo messaggio non è inviato immediatamente dopo la scadenza del timeout, ma solo quando arriverà il momento di contattare il conditional forwarder successivo.&lt;/p&gt;  &lt;p&gt;Questo significa che, con default settings, un DNS Windows Server 2008 R2 sarà in grado di contattare al massimo 2 conditional forwarders. Non ci sarà tempo sufficiente per arrivare ad usare il terzo. Infatti in base ai valori di default il server:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Contatterà il primo conditional forwarder dopo 0 secondi&lt;/li&gt;    &lt;li&gt;Contatterà il secondo conditional forwarder dopo 5.5 secondi&lt;/li&gt;    &lt;li&gt;Dopo 8 secondi scadrà RecursionTimeout &lt;/li&gt;    &lt;li&gt;Dopo 5.5 + 6 = 11.5 secondi (quando sarebbe stato tempo di contattare il terzo conditional forwarder) il server risponderà “server failure” al client.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Esempio:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;DNS server con IP address 10.10.10.10 e configurato con 5 conditional forwarders (10.0.0.1-10.0.0.5) per la zona Microsoft.com&lt;/p&gt;  &lt;p&gt;Client ha IP address 10.0.0.8 ed effettua una query per Microsoft.com&lt;/p&gt;  &lt;p&gt;In una cattura di rete vedremmo il seguente comportamento (notare 10.0.0.3, 10.0.0.4 e 10.0.0.5 mai interrogati):&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/4503.image_5F00_3136FAF1.png"&gt;&lt;img title="image" style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/2870.image_5F00_thumb_5F00_40D996B3.png" width="814" height="76" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Per ulteriori informazioni:&lt;/h3&gt;  &lt;p&gt;   &lt;br /&gt;Teoria&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Understanding Forwarders      &lt;br /&gt;&lt;a title="http://technet.microsoft.com/en-us/library/cc782142(v=ws.10).aspx" href="http://technet.microsoft.com/en-us/library/cc782142(v=ws.10).aspx"&gt;http://technet.microsoft.com/en-us/library/cc782142(v=ws.10).aspx&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Configurazione&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Forwarding Timeout      &lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc940784.aspx"&gt;http://technet.microsoft.com/en-us/library/cc940784.aspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Recursion Timeout      &lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc940788.aspx"&gt;http://technet.microsoft.com/en-us/library/cc940788.aspx&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Best Practice&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The Recursion Timeout must be greater than the Forwarding Timeout      &lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ff807363(v=ws.10).aspx"&gt;http://technet.microsoft.com/en-us/library/ff807363(v=ws.10).aspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;The Forwarding Timeout value should be 2 to 10 seconds      &lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ff807396(v=WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/ff807396(v=WS.10).aspx&lt;/a&gt;       &lt;br /&gt;&amp;#160;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Grazie a tutti e alla prossima!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/b/itasupport/archive/2010/08/30/stefano-gagliardi.aspx"&gt;Stefano Gagliardi&lt;/a&gt;     &lt;br /&gt;Sr. Support Engineer     &lt;br /&gt;Microsoft Enterprise Platform Support&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3573320" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Windows+Team/">Windows Team</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Windows+Server+2008+R2/">Windows Server 2008 R2</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Stefano+Gagliardi/">Stefano Gagliardi</category></item><item><title>System Center Advisor - Obiettivi e utilizzo</title><link>http://blogs.technet.com/b/itasupport/archive/2013/03/25/system-center-advisor-obiettivi-e-utilizzo.aspx</link><pubDate>Mon, 25 Mar 2013 14:47:35 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3560775</guid><dc:creator>Supporto Tecnico Enterprise</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/itasupport/rsscomments.aspx?WeblogPostID=3560775</wfw:commentRss><comments>http://blogs.technet.com/b/itasupport/archive/2013/03/25/system-center-advisor-obiettivi-e-utilizzo.aspx#comments</comments><description>&lt;p&gt;Ciao a tutti,&lt;/p&gt;  &lt;p&gt;il &lt;a href="http://blogs.technet.com/b/momteam/archive/2013/03/06/system-center-advisor.aspx" target="_blank"&gt;Product Team&lt;/a&gt; ha deciso di rilasciare &lt;a href="https://www.systemcenteradvisor.com/" target="_blank"&gt;System Center Advisor&lt;/a&gt; gratis e utilizzabile liberamente &lt;a href="https://www.systemcenteradvisor.com/Main.aspx?signUp=on" target="_blank"&gt;tramite registrazione&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;La &lt;a href="http://www.microsoft.com/online/international-availability.aspx" target="_blank"&gt;disponibilità della piattaforma&lt;/a&gt; con interfaccia grafica in inglese è valida attualmente nelle principali nazioni del mondo.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Funzionamento dell’infrastruttura&lt;/h3&gt;  &lt;p&gt;La seguente immagine illustra i &lt;a href="http://onlinehelp.microsoft.com/en-us/advisor/ff962512.aspx#atl_over" target="_blank"&gt;blocchi di funzionamento&lt;/a&gt; di System Center Advisor:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;User &lt;/strong&gt;= l’utente o il team di persone registrate e autorizzate ad accedere alla dashboard per analizzare i risultati &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Cloud &lt;/strong&gt;= consiste sia nella parte di interfaccia grafica accessibile tramite la dashboard web, che il backend in cui i dati raccolti sono processati ed analizzati &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Server &lt;/strong&gt;= composta da 2 parti: un gateway per la comunicazione sicura verso il cloud e gli agent installati nei server per collezionare i dati &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;img title="System Center Advisor environment" alt="System Center Advisor environment" src="http://i.onlinehelp.microsoft.com/dynimg/IC488281.gif" /&gt;&lt;/p&gt;  &lt;p&gt;Con l’ultimo aggiornamento di Marzo 2013, sono stati aggiunti Windows Server 2012 e Microsoft Hyper-V Server 2012.&lt;/p&gt;  &lt;p&gt;Di seguito l’elenco completo delle piattaforme supportate:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/0435.image_5F00_6734A173.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/4604.image_5F00_thumb_5F00_0B7985F6.png" width="773" height="257" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Consiglio di seguire questa &lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/5176.what-s-new-in-system-center-advisor.aspx" target="_blank"&gt;pagina con gli aggiornamenti della piattaforma&lt;/a&gt; in quanto è in continua espansione e includerà a breve nuovi prodotti.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Registrazione degli utenti&lt;/h3&gt;  &lt;p&gt;Per iniziare è necessario &lt;a href="https://www.systemcenteradvisor.com/Main.aspx?signUp=on" target="_blank"&gt;registrare un nuovo account&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/4544.image_5F00_3ED54952.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/0456.image_5F00_thumb_5F00_4207313A.png" width="449" height="211" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;L’utente di System Center Advisor è associato all’account Microsoft (ex - Windows Live ID):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/4174.image_5F00_1D0970C1.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/8750.image_5F00_thumb_5F00_66B848B1.png" width="874" height="751" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Accettate le condizioni del servizio, l’account è attivo ed è possibile iniziare subito la distribuzione dell’agent:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/3302.image_5F00_1A140C0E.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/3757.image_5F00_thumb_5F00_1863403A.png" width="896" height="801" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Configurazione del servizio - Gateway&lt;/h3&gt;  &lt;p&gt;Dopo la registrazione degli utenti che gestirà il servizio, procediamo con la configurazione del servizio.&lt;/p&gt;  &lt;p&gt;La seguente schermata illustra i 2 componenti fondamentali da installare: Gateway e Agent.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/8358.image_5F00_491647E5.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/3173.image_5F00_thumb_5F00_1E7A6708.png" width="894" height="800" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I &lt;a href="http://onlinehelp.microsoft.com/en-us/advisor/ff962524.aspx" target="_blank"&gt;requisiti di sistema necessari&lt;/a&gt; per un corretto funzionamento del programma sono i seguenti:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Server 2008 o successivo &lt;/li&gt;    &lt;li&gt;Microsoft .NET Framework 3.5 SP1 &lt;/li&gt;    &lt;li&gt;Internet Explorer 7 / Firefox 3.5 e successivi &lt;/li&gt;    &lt;li&gt;Microsoft Silverlight &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Il programma d’installazione è di 62 Mb e include entrambi i componenti gateway e agent:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/7026.image_5F00_5AE2B5E5.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/8463.image_5F00_thumb_5F00_3046D508.png" width="896" height="803" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Una volta scaricato il programma e il certificato, procediamo con l’installazione del &lt;strong&gt;Gateway&lt;/strong&gt; ovvero il computer che raccoglierà i log dei server e li invierà nel cloud tramite connessione criptata.&lt;/p&gt;  &lt;p&gt;Attivando l’opzione Gateway,&amp;#160; un messaggio avvisa che per poter comunicare correttamente, è necessario avere la porta 80 aperta tra i server monitorati e nel gateway verso internet.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/2543.image_5F00_2DBDA34A.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/5226.image_5F00_thumb_5F00_40FE59E9.png" width="499" height="384" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Terminata l’installazione, si procede con la configurazione del Gateway.&lt;/p&gt;  &lt;p&gt;Il primo passo consiste nell’impostare il proxy e importare il certificato scaricato precedentemente:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/8311.image_5F00_58B5914F.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/8764.image_5F00_thumb_5F00_3D9CC241.png" width="797" height="598" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Dopo queste impostazioni, il gateway procede alla configurazione dei componenti:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/0702.image_5F00_54E7C6B2.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/7288.image_5F00_thumb_5F00_331BEE21.png" width="799" height="599" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Configurazione del servizio - Agent&lt;/h3&gt;  &lt;p&gt;Ora, si continua con la configurazione degli Agent sui server da monitorare.&lt;/p&gt;  &lt;p&gt;Nel caso di infrastrutture complesse, sono disponibili le procedure per &lt;a href="http://onlinehelp.microsoft.com/en-us/advisor/gg252272.aspx" target="_blank"&gt;l’installazione tramite command line&lt;/a&gt; oppure altre diverse &lt;a href="http://onlinehelp.microsoft.com/en-us/advisor/ff962510.aspx" target="_blank"&gt;tipologie di deployment&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;L’installazione via grafica è simile al Gateway e ha gli stessi prerequisiti:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/1680.image_5F00_186F5208.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/6320.image_5F00_thumb_5F00_48B626BE.png" width="719" height="642" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Durante l’installazione dell’Agent si nota che il componente è “Sytems Center 2012 – Operations Manager Agent” che è il motore utilizzato per raccogliere le informazioni dai server:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/3618.image_5F00_001C37ED.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/8446.image_5F00_thumb_5F00_73AE14C3.png" width="499" height="386" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Terminata installazione, si procede ad impostazione il server che svolge la funzione di gateway:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/0882.image_5F00_39529EE2.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/0827.image_5F00_thumb_5F00_7BE23A5A.png" width="798" height="601" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Terminata la configurazione del client, si dovrebbe ricevere la seguente schermata:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/4578.image_5F00_4F590A74.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/1881.image_5F00_thumb_5F00_26DA2860.png" width="801" height="600" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Per poter visualizzare i risultati, potete collegarvi al sito web &lt;a href="https://www.systemcenteradvisor.com/" target="_blank"&gt;System Center Advisor&lt;/a&gt; in cui saranno convogliate tutte le informazioni provenienti dai server monitorati:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/1643.image_5F00_7A50F879.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/5808.image_5F00_thumb_5F00_237890B8.png" width="1007" height="636" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Il prossimo post illustrerà i dettagli della Dashboard e la parte di raccolta dei log lato server.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Per qualsiasi altra domanda, potete utilizzare i commenti sotto all’articolo.&lt;/p&gt;  &lt;p&gt;Grazie e Buona giornata!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/itasupport/pages/daniele-maso.aspx"&gt;Daniele Maso&lt;/a&gt;     &lt;br /&gt;Senior Support Engineer     &lt;br /&gt;Microsoft Enterprise Platform Support&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3560775" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Daniele+Maso/">Daniele Maso</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/System+Center+Team/">System Center Team</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/System+Center+Advisor/">System Center Advisor</category></item><item><title>Windows 7 SP1 e Windows server 2008 R2 SP1 – Rilasciato un aggiornamento cumulativo raccomandato KB2775511</title><link>http://blogs.technet.com/b/itasupport/archive/2013/03/19/windows-7-sp1-e-windows-server-2008-r2-sp1-rilasciato-un-aggiornamento-cumulativo-raccomandato-kb2775511.aspx</link><pubDate>Mon, 18 Mar 2013 23:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3559240</guid><dc:creator>Supporto Tecnico Enterprise Italia</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/itasupport/rsscomments.aspx?WeblogPostID=3559240</wfw:commentRss><comments>http://blogs.technet.com/b/itasupport/archive/2013/03/19/windows-7-sp1-e-windows-server-2008-r2-sp1-rilasciato-un-aggiornamento-cumulativo-raccomandato-kb2775511.aspx#comments</comments><description>&lt;p&gt;Ciao a tutti!&lt;/p&gt;  &lt;p&gt;Lo scorso 13 marzo 2013 Microsoft ha rilasciato un aggiornamento cumulativo per i due sistemi operativi Windows 7 e Windows server 2008 R2 che risolve diversi problemi noti e migliora le performance durante la fase di boot e logon.&lt;/p&gt;  &lt;p&gt;La KB in questione è consultabile e scaricabile all’indirizzo &lt;a title="http://support.microsoft.com/kb/2775511" href="http://support.microsoft.com/kb/2775511"&gt;http://support.microsoft.com/kb/2775511&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Le hotfix contenute nella KB migliorano le performance e l’affidabilità generale di computer basati su Windows 7 SP1 e Windows server 2008 R2; in particolare gli ambiti principali su cui l’aggiornamento apporta modifiche sono:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Componenti di Windows Client Remote File System, tra cui:      &lt;ul&gt;       &lt;li&gt;Web-based Distributed Authoring and Versioning (WebDAV) &lt;/li&gt;        &lt;li&gt;DFSN client &lt;/li&gt;        &lt;li&gt;Folder Redirection &lt;/li&gt;        &lt;li&gt;Offline Files and Folders (CSC) &lt;/li&gt;        &lt;li&gt;SMB client &lt;/li&gt;        &lt;li&gt;Redirected Drive Buffering Subsystem (RDB) &lt;/li&gt;        &lt;li&gt;Multiple UNC Provider (MUP) &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Componenti del servizio SMB e del protocollo TCP. &lt;/li&gt;    &lt;li&gt;Processamento delle Group Policy e preferenze delle Group Policy &lt;/li&gt;    &lt;li&gt;Componenti WMI &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Tutto ciò porta a un miglioramento delle performance, in particolare dei seguenti aspetti:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Migliore performance di rete &lt;/li&gt;    &lt;li&gt;Minore uso di banda di rete e carico sui servizi offerti da Domain Controller &lt;/li&gt;    &lt;li&gt;Minore utilizzo di CPU e migliore performance per la verifica del repository WMI &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;A chi è destinato questo aggiornamento?&lt;/h3&gt;  &lt;p&gt;L’enterprise hotfix rollup è destinato principalmente:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;a coloro che vogliono migliorare l’affidabilità e le performance di client e server, basati sui sistemi operativi sopra citati, &lt;em&gt;joinati&lt;/em&gt; ad un dominio; &lt;/li&gt;    &lt;li&gt;a coloro i quali creano immagini per il deployment in ambito aziendale. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;L’aggiornamento richiede di avere già installato il Service Pack 1 dei sistemi operativi Windows 7 e Windows server 2008 R2.    &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;La KB2775511 è un Service Pack?&lt;/h3&gt;  &lt;p&gt;No, questo aggiornamento non è un Service Pack, ma questa KB è raccomandata da Microsoft e dovrebbe essere inserita nei piani di manutenzione e patching degli ambienti enterprise gestiti.&lt;/p&gt;  &lt;p&gt;La KB2775511 contiene 90 aggiornamenti precedentemente rilasciati dopo il Service Pack 1 ed è adatta sia ad ambienti client che server.&lt;/p&gt;  &lt;p&gt;E’ consigliata la distribuzione sia sui client che sui server della propria organizzazione, dato che in questo modo si riesce ad ottenere il massimo dei benefici offerti.&lt;/p&gt;  &lt;p&gt;Consiglio, ovviamente, di effettuare il deployment di tale aggiornamento in un ambiente di test durante un periodo di monitoraggio appropriato, pratica che dovrebbe essere comune in ambienti enterprise, prima di effettuare l’aggiornamento di ambienti in produzione.    &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;Note post-installazione dell’aggiornamento&lt;/h3&gt;  &lt;p&gt;L’installer del rollup package non abilita due aggiornamenti contenuti nello stesso.&lt;/p&gt;  &lt;p&gt;Nell’articolo della KB (&lt;a title="http://support.microsoft.com/kb/2775511" href="http://support.microsoft.com/kb/2775511"&gt;http://support.microsoft.com/kb/2775511&lt;/a&gt;) sotto la sezione “Registry information” sono riportate le istruzioni per abilitarli con alcune note a margine.&lt;/p&gt;  &lt;p&gt;Consiglio di leggere attentamente il contenuto dell’articolo per intero in modo che tutto sia chiaro prima di procedere con la distribuzione e/o installazione.&lt;/p&gt;  &lt;h2&gt;Come ottenere la KB2775511&lt;/h2&gt;  &lt;p&gt;L’aggiornamento può essere scaricato semplicemente dal Microsoft Update Catalog e può essere distribuito tramite WSUS e SCCM, oltre che essere installato manualmente come singola hotfix.&lt;/p&gt;  &lt;p&gt;L’update non è proposta in automatico da Windows Update.&lt;/p&gt;  &lt;h3&gt;Download manuale da Microsoft Update Catalog &lt;/h3&gt;  &lt;p&gt;Di seguito i semplici passi per scaricare la KB dal &lt;a href="http://catalog.update.microsoft.com/" target="_blank"&gt;Microsoft Update Catalog&lt;/a&gt; manualmente:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Aprire il web browser e inserire l’URL &lt;a title="http://catalog.update.microsoft.com/" href="http://catalog.update.microsoft.com/"&gt;http://catalog.update.microsoft.com/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Cliccare su “Install” se viene richiesta l’installazione dell’add-on “Microsoft Update Catalog”      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/8080.image_5F00_21D72C46.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/4213.image_5F00_thumb_5F00_086F290C.png" width="1062" height="79" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Nella casella di ricerca inserire la stringa “2775511” e cliccare su “Ricerca”      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/5141.image_5F00_3517E2E5.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/0652.image_5F00_thumb_5F00_3DB83B71.png" width="910" height="235" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Nell’elenco delle versioni della KB, cliccare su “Aggiungi” per selezionare i singoli aggiornamenti o “Aggiungi tutto”      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/3326.image_5F00_5B4A1670.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/3782.image_5F00_thumb_5F00_07F2D04A.png" width="1045" height="186" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Cliccare su “visualizza carrello”      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/0083.image_5F00_3EECAE83.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/3678.image_5F00_thumb_5F00_72B4A4D4.png" width="521" height="333" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Cliccare su “Download”      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/4276.image_5F00_22FB798B.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/0410.image_5F00_thumb_5F00_3B1EE3E6.png" width="514" height="182" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Selezionare il percorso dove salvare i file e cliccare su “Continua”      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/7183.image_5F00_67C79DBF.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/3326.image_5F00_thumb_5F00_7FEB081A.png" width="514" height="168" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Attendere la conclusione del download      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/6746.image_5F00_2C93C1F4.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/5444.image_5F00_thumb_5F00_6F8F9061.png" width="537" height="182" /&gt;&lt;/a&gt;       &lt;br /&gt;…       &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/4401.image_5F00_74FE0105.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/1526.image_5F00_thumb_5F00_7AD8A49E.png" width="542" height="188" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Nel path specificato in precedenza troveremo i file delle hotfix selezionate &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;h3&gt;Importare la hotfix in System Center Configuration Manager 2012 e WSUS&lt;/h3&gt;  &lt;p&gt;&lt;em&gt;Alcune screenshot sotto riportate sono tratte da &lt;/em&gt;&lt;a title="http://blogs.technet.com/b/michaelgriswold/archive/2013/03/13/kb2775511-deployment-for-the-sccm-admin.aspx" href="http://blogs.technet.com/b/michaelgriswold/archive/2013/03/13/kb2775511-deployment-for-the-sccm-admin.aspx"&gt;&lt;em&gt;http://blogs.technet.com/b/michaelgriswold/archive/2013/03/13/kb2775511-deployment-for-the-sccm-admin.aspx&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Sul central site/CAS Software Update Point, aprire l’admin console Windows Server Update Services      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Nel panel di sinistra, aprire la voce “Updates” e nel menu contestuale, cliccare su “Import Updates…”; questo aprirà una pagina web del Microsoft Update Catalog      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/5775.image_5F00_4010FBC8.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/0435.image_5F00_thumb_5F00_457F6C6C.png" width="315" height="312" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Nella pagina cercare la stringa “2775511” e, una volta identificate le hotfix desiderate, selezionare la checkbox “Import directly into Windows Server Update Services”      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/7268.image_5F00_6F13379F.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/3404.image_5F00_thumb_5F00_6C8A05E1.png" width="882" height="275" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Cliccando su “Import”, inizierà il download      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/1200.image_5F00_262C9FCC.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/7127.image_5F00_thumb_5F00_3D77A43D.png" width="569" height="256" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Verificare che SCCM abbia l’impostazione “Updates” attivata per la sincronizzazione      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Una volta che il download è completato, si può sincronizzare SCCM e, a questo punto, sarà possibile vedere gli aggiornamenti per il deployment come qualsiasi altro update.      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/2605.image_5F00_7B90BEEE.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/2260.image_5F00_thumb_5F00_725483AD.png" width="380" height="436" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;…      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/1856.image_5F00_294E61E7.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/6685.image_5F00_thumb_5F00_7C58FF0B.png" width="645" height="159" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Link utili&lt;/h2&gt;  &lt;p&gt;Consiglio la lettura dei seguenti articoli, relativamente all’argomento trattato in questo post.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;An enterprise hotfix rollup is available for Windows 7 SP1 and Windows Server 2008 R2 SP1      &lt;br /&gt;&lt;a title="http://support.microsoft.com/kb/2775511" href="http://support.microsoft.com/kb/2775511"&gt;http://support.microsoft.com/kb/2775511&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Slow Boot Slow Login (SBSL) Hotfix Rollup for Windows 7 and Server 2008 R2 Available Today!      &lt;br /&gt;&lt;a title="http://blogs.technet.com/b/askpfeplat/archive/2013/03/12/slow-boot-slow-login-sbsl-hotfix-rollup-for-windows-7-and-server-2008-r2-available-today.aspx" href="http://blogs.technet.com/b/askpfeplat/archive/2013/03/12/slow-boot-slow-login-sbsl-hotfix-rollup-for-windows-7-and-server-2008-r2-available-today.aspx"&gt;http://blogs.technet.com/b/askpfeplat/archive/2013/03/12/slow-boot-slow-login-sbsl-hotfix-rollup-for-windows-7-and-server-2008-r2-available-today.aspx&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;KB2775511 deployment for the SCCM Admin      &lt;br /&gt;&lt;a title="http://blogs.technet.com/b/michaelgriswold/archive/2013/03/13/kb2775511-deployment-for-the-sccm-admin.aspx" href="http://blogs.technet.com/b/michaelgriswold/archive/2013/03/13/kb2775511-deployment-for-the-sccm-admin.aspx"&gt;http://blogs.technet.com/b/michaelgriswold/archive/2013/03/13/kb2775511-deployment-for-the-sccm-admin.aspx&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Avvertenza&lt;/h3&gt;  &lt;p&gt;Il sottoscritto non si assume alcuna responsabilità derivante dall’esecuzione di attività descritte nel presente articolo.    &lt;br /&gt;Il contenuto dell’articolo è puramente indicativo e le azioni descritte devono essere vagliate caso per caso.&lt;/p&gt;  &lt;p&gt;Buona giornata!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/b/itasupport/archive/2011/10/04/alessandro-caniglia.aspx"&gt;Alessandro Caniglia&lt;/a&gt;     &lt;br /&gt;Support Engineer     &lt;br /&gt;Microsoft Enterprise Platform Support&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3559240" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Windows+Team/">Windows Team</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/WSUS/">WSUS</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Windows+Server+2008+R2/">Windows Server 2008 R2</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Alessandro+Caniglia/">Alessandro Caniglia</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/enterprise+hotfix+rollup/">enterprise hotfix rollup</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Windows+7+SP1/">Windows 7 SP1</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/KB2775511/">KB2775511</category></item><item><title>TMG 2010–Accesso Ftp access denied 550</title><link>http://blogs.technet.com/b/itasupport/archive/2013/03/05/tmg-2010-accesso-ftp-access-denied-550.aspx</link><pubDate>Mon, 04 Mar 2013 23:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3556200</guid><dc:creator>Supporto Tecnico Enterprise Italia</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/itasupport/rsscomments.aspx?WeblogPostID=3556200</wfw:commentRss><comments>http://blogs.technet.com/b/itasupport/archive/2013/03/05/tmg-2010-accesso-ftp-access-denied-550.aspx#comments</comments><description>&lt;p&gt;Ciao a tutti!&lt;/p&gt;  &lt;p&gt;In questo articolo vedremo come risolvere un particolare problema legato all’accesso ad un server FTP remoto dietro TMG 2010.&lt;/p&gt;  &lt;p&gt;Immaginate il seguente scenario: un PC all’interno di una rete aziendale vuole accedere a un server FTP remoto attraverso TMG 2010 utilizzando un client-FTP come – ad esempio - &lt;b&gt;&lt;i&gt;Filezilla&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/8244.clip_5F00_image002_5F00_509133FA.png"&gt;&lt;img title="clip_image002" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/6177.clip_5F00_image002_5F00_thumb_5F00_1635BE19.png" width="471" height="360" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;La configurazione di questo server FTP (autenticazione, cifratura, ecc..) non ci interessa per questo tipo di situazione.&lt;/p&gt;  &lt;p&gt;Sul server TMG, abbiamo creato una regola d’accesso che consente il transito del protocollo FTP dall’interno all’esterno in modalità “&lt;i&gt;Read-only&lt;/i&gt;” (quindi solo in lettura):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/7651.clip_5F00_image004_5F00_5BDA4837.jpg"&gt;&lt;img title="clip_image004" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="clip_image004" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/5584.clip_5F00_image004_5F00_thumb_5F00_33C79918.jpg" width="638" height="243" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/1781.clip_5F00_image006_5F00_796C2336.jpg"&gt;&lt;img title="clip_image006" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="clip_image006" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/5670.clip_5F00_image006_5F00_thumb_5F00_7F46C6CF.jpg" width="230" height="255" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Quando tentiamo la connessione verso il server FTP usando – ad esempio – &lt;i&gt;Filezilla&lt;/i&gt;, potremmo ritrovarci col seguente errore:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/0207.clip_5F00_image008_5F00_0278AEB8.jpg"&gt;&lt;img title="clip_image008" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="clip_image008" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/3835.clip_5F00_image008_5F00_thumb_5F00_6EEB4F16.jpg" width="655" height="409" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I problemi di connettività a server FTP attraverso ISA/TMG possono essere causati da svariati diversi aspetti.&lt;/p&gt;  &lt;p&gt;Nel seguente articolo troviamo I principali metodi di risoluzione delle problematiche piu comuni:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/bb794745.aspx"&gt;http://technet.microsoft.com/en-us/library/bb794745.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Tuttavia, il problema oggetto di questo articolo è di natura differente rispetto a quanto riportato nell’articolo technet, e dipende da una ben precisa proprietà “&lt;i&gt;by-design&lt;/i&gt;” del filtro FTP di TMG.&lt;/p&gt;  &lt;p&gt;Nello specifico, nel nostro caso osserviamo che la connessione fallisce riportando un errore “&lt;b&gt;550-Access Denied&lt;/b&gt;” in seguito all’invio di un comando &lt;b&gt;MLSD&lt;/b&gt; da parte del client.&lt;/p&gt;  &lt;p&gt;Che scopo ha il comando &lt;b&gt;MLSD&lt;/b&gt;?&lt;/p&gt;  &lt;p&gt;Il seguente articolo IETF ce ne chiarisce l’utilità:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://tools.ietf.org/html/draft-ietf-ftpext-mlst-16#section-7"&gt;http://tools.ietf.org/html/draft-ietf-ftpext-mlst-16#section-7&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Citando testualmente:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;The MLST and MLSD commands are intended to standardize the file and directory information returned by the Server-FTP process. These commands differ from the LIST command in that the format of the replies is strictly defined although extensible.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;Vediamo quindi che tale comando è utilizzato con l’intento di “formattare” le informazioni relative a &lt;i&gt;files&lt;/i&gt; e &lt;i&gt;directories&lt;/i&gt; pubblicate dal server FTP, inviateci dall’FTP stesso.&lt;/p&gt;  &lt;p&gt;Il filtro FTP di TMG, di sua natura, non considera il comando &lt;b&gt;MLSD&lt;/b&gt; come comando di “&lt;i&gt;Read&lt;/i&gt;” (al contrario di quanto avviene col comando &lt;b&gt;LIST&lt;/b&gt;): una risoluzione banale del problema consisterebbe, pertanto, nel garantire priviliegi di scrittura sul server FTP andando a modificare la modalità di lavoro del filtro FTP&lt;b&gt; &lt;/b&gt;di TMG a livello di regola d’accesso:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/1460.clip_5F00_image010_5F00_7459BFBA.jpg"&gt;&lt;img title="clip_image010" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="clip_image010" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/2043.clip_5F00_image010_5F00_thumb_5F00_4C47109B.jpg" width="297" height="330" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I client FTP che utilizzano il comando LIST non riporteranno questa problematica, in quanto il LIST è consentito dal filtro.&lt;/p&gt;  &lt;p&gt;Ora, garantire privilegi di scrittura sul server FTP spesso non risulta desiderabile, nè consigliato, dipendentemente dall’utilizzo considerato.&lt;/p&gt;  &lt;p&gt;Esiste un workaround che ci permette di mantenere il filtro FTP in “&lt;i&gt;Read-Only&lt;/i&gt;” risolvendo questa problematica: è infatti possibile inserire tramite script il comando &lt;b&gt;MLDS&lt;/b&gt; nella lista dei comandi consentiti dal filtro FTP di TMG configurato in “&lt;i&gt;Read-Only&lt;/i&gt;” mode.&lt;/p&gt;  &lt;p&gt;Il seguente articolo MSDN ci spiega come configurare vari add-ins:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd435753.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd435753.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nello specifico del nostro caso:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;FTP Access Filter&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;FTP Access Filter is an application filter that is installed with Forefront TMG. It enables FTP protocols. When running in read-only mode, FTP Access Filter blocks all commands in the control channel except the following commands: ABOR, ACCT, CDUP, CWD /0, FEAT, HELP, LANG, LIST, MODE, NLST, NOOP, PASS, PASV, PORT, PWD /0, QUIT, REIN, REST, RETR, SITE, STRU, SYST, TYPE, USER, XDUP, XCWD, XPWD, SMNT. This should block any writing to the server side. &lt;u&gt;The default list of allowed commands can be replaced by a customized list that is written to the collection of vendor parameters sets (&lt;b&gt;FPCVendorParametersSets&lt;/b&gt;) associated with the filter&lt;/u&gt;. The Firewall service must restarted for the new settings to take effect. &lt;/i&gt;&lt;/p&gt;  &lt;p&gt;L’esempio di script presente nell’articolo può essere utilizzato per customizzare la lista dei comandi consentiti dal filtro.&lt;/p&gt;  &lt;p&gt;Il valore di &lt;b&gt;vpSet.Value(&amp;quot;AllowReadCommands&amp;quot;) = &amp;quot;&lt;i&gt;xxxxxxx&lt;/i&gt;&amp;quot; &lt;/b&gt;andrà configurato con &lt;u&gt;tutti&lt;/u&gt; i comandi che desideriamo il filtro FTP di TMG consideri come &lt;u&gt;acconsentiti&lt;/u&gt;.&lt;/p&gt;  &lt;p&gt;In questo modo sarà possibile mantenere il filtro FTP in “&lt;i&gt;Read-Only&lt;/i&gt;”, e al contempo la nostra connessione &lt;b&gt;&lt;i&gt;FileZilla&lt;/i&gt;&lt;/b&gt; sarà in grado di funzionare perfettamente.&lt;/p&gt;  &lt;p&gt;Nella speranza che questo possa tornarvi utile....arrivederci al prossimo topic!!&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Daniele Gaiulli – MS Support Engineer&lt;/i&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3556200" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Windows+Team/">Windows Team</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Daniele+Gaiulli/">Daniele Gaiulli</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/TMG+Server+2010/">TMG Server 2010</category></item><item><title>Windows 8, Windows 7, Windows Vista, Windows XP – strumento per la risoluzione di problemi durante la disinstallazione di programmi</title><link>http://blogs.technet.com/b/itasupport/archive/2013/02/20/windows-8-windows-7-windows-vista-windows-xp-strumento-per-la-risoluzione-di-problemi-durante-la-disinstallazione-di-programmi.aspx</link><pubDate>Tue, 19 Feb 2013 23:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3552173</guid><dc:creator>Supporto Tecnico Enterprise Italia</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/itasupport/rsscomments.aspx?WeblogPostID=3552173</wfw:commentRss><comments>http://blogs.technet.com/b/itasupport/archive/2013/02/20/windows-8-windows-7-windows-vista-windows-xp-strumento-per-la-risoluzione-di-problemi-durante-la-disinstallazione-di-programmi.aspx#comments</comments><description>&lt;p&gt;Buongiorno!&lt;/p&gt;  &lt;p&gt;Qualche giorno fa mi è capitato di riscontrare un problema durante la disinstallazione di una applicazione che non andava a buon fine.&lt;/p&gt;  &lt;p&gt;Il primo passo da fare in questi casi è cercare di comprendere la possibile causa dell’errore, leggendo gli ulteriori&amp;#160; dettagli visualizzati dal popup.&lt;/p&gt;  &lt;p&gt;Se non riusciamo a trovare la strada corretta, Microsoft Fix it ci viene in aiuto.&lt;/p&gt;  &lt;p&gt;Tra i tool messi a disposizione nella famiglia Microsoft Fix it (ne parlerò in un altro post del blog in futuro), ce n’è uno adatto alla nostra esigenza: &lt;/p&gt;  &lt;h2&gt;Program Install and Uninstall troubleshooter&lt;/h2&gt;  &lt;p&gt;E’ consigliato l’uso di questo strumento solo se la disinstallazione/installazione del programma fallisce usando “Aggiungi/Rimuovi Programmi” di Windows.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/4431.image_5F00_33E91378.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/8231.image_5F00_thumb_5F00_4076C094.png" width="643" height="475" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Il tool è scaricabile da &lt;a title="http://support.microsoft.com/mats/Program_Install_and_Uninstall/en" href="http://support.microsoft.com/mats/Program_Install_and_Uninstall/en"&gt;http://support.microsoft.com/mats/Program_Install_and_Uninstall/en&lt;/a&gt; o dal seguente link localizzato in lingua italiana &lt;a title="http://support.microsoft.com/mats/program_install_and_uninstall/it" href="http://support.microsoft.com/mats/program_install_and_uninstall/it"&gt;http://support.microsoft.com/mats/program_install_and_uninstall/it&lt;/a&gt; .&lt;/p&gt;  &lt;p&gt;Può essere lanciato direttamente dalla pagina web, cliccando su “Esegui adesso”.&lt;/p&gt;  &lt;p&gt;Una volta accettata la richiesta dell’UAC e accettato i termini di licenza, lo strumento effettuerà un rapido controllo e una installazione, come visibile in figura:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/0317.image_5F00_50A2888D.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/5504.image_5F00_thumb_5F00_6D5BFDA2.png" width="673" height="453" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Terminato il processo di installazione, saranno visualizzate due possibili scelte:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/6177.image_5F00_23E9A8E7.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/4118.image_5F00_thumb_5F00_29C44C80.png" width="685" height="276" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Cliccando sulla scelta raccomandata, verrà chiesto se il problema riscontrato riguarda l’installazione o la disinstallazione.&lt;/p&gt;  &lt;p&gt;Scelta la voce “Uninstalling”, verrà visualizzato un elenco di applicazioni attualmente installate sulla macchina:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/4034.image_5F00_5600D364.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/4118.image_5F00_thumb_5F00_5BDB76FD.png" width="705" height="305" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Selezionate l’applicazione che non si riesce a disinstallare e cliccate su Next.&lt;/p&gt;  &lt;p&gt;Vi verrà chiesta conferma della disinstallazione:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/7167.image_5F00_1E6B1276.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/8637.image_5F00_thumb_5F00_2BD1257C.png" width="447" height="290" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Una volta avviata la procedura, accettando la disinstallazione del componente, il tool provvederà ad effettuare una serie di operazioni il cui esito viene mostrato come in figura seguente:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/1768.image_5F00_3C69206A.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-90-metablogapi/7142.image_5F00_thumb_5F00_57354676.png" width="699" height="403" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;E’ anche possibile visualizzare in dettaglio le operazioni effettuate, cliccando su “View report details”.&lt;/p&gt;  &lt;p&gt;Prima di terminare l’esecuzione del tool, viene richiesto un feedback per aiutare Microsoft a migliorare lo strumento grazie alla collaborazione degli utenti.&lt;/p&gt;  &lt;h3&gt;Quali operazioni effettua Program Install and Uninstall troubleshooter?&lt;/h3&gt;  &lt;p&gt;Come elencato nella pagina da cui è possibile scaricare lo strumento, esso effettua le seguenti tipologie di attività:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Rimuove chiavi di registro incorrette su sistemi operativi a 64 bit. &lt;/li&gt;    &lt;li&gt;Corregge le chiavi di registro di Windows che controllano l’aggiornamento (patching) che sono corrotte. &lt;/li&gt;    &lt;li&gt;Risolve problemi che prevengono la corretta installazione di nuovi programmi. &lt;/li&gt;    &lt;li&gt;Risolve problemi che provocano il fallimento della completa disinstallazione/installazione di programmi o di aggiornamenti. &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Un esempio pratico di utilizzo: l’errore 1603 impedisce l’aggiornamento del client Skype&lt;/h2&gt;  &lt;p&gt;Personalmente ho riscontrato un problema effettuando un aggiornamento della versione del client Skype su un PC basato su Windows 7.&lt;/p&gt;  &lt;p&gt;Durante la fase di aggiornamento, l’iter si bloccava visualizzando un errore irreversibile.&lt;/p&gt;  &lt;p&gt;Il contenuto dell’errore visualizzato si riferiva a un problema che non permetteva di completare il processo di disinstallazione/aggiornamento del client Skype.&lt;/p&gt;  &lt;p&gt;L’ID visualizzato 1603, comune a diversi scenari relativi a installazione/disinstallazione di applicazioni, ed esso cita:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;error 1603: A fatal error occurred during installation&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I dettagli a disposizione suggerivano che il problema fosse legato alla mancanza del file .msi di installazione della versione attualmente installata del client Skype, che non era reperibile tra i percorsi in cui l’&lt;em&gt;unistaller&lt;/em&gt; lo cercava.&lt;/p&gt;  &lt;p&gt;Lo stesso errore veniva visualizzato provando a disinstallare Skype da Aggiungi/Rimuovi Programmi.&lt;/p&gt;  &lt;p&gt;Utilizzando lo strumento della famiglia Fix it descritto sopra, sono stato in grado di rimuovere correttamente il vecchio client di Skype e quindi di installare la nuova versione.&lt;/p&gt;  &lt;h3&gt;Link utili:&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Program Install and Uninstall troubleshooter      &lt;br /&gt;&lt;a title="http://support.microsoft.com/mats/program_install_and_uninstall" href="http://support.microsoft.com/mats/program_install_and_uninstall"&gt;http://support.microsoft.com/mats/program_install_and_uninstall&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Microsoft Fix it center      &lt;br /&gt;&lt;a title="http://support.microsoft.com/find-solutions/" href="http://support.microsoft.com/find-solutions/"&gt;http://support.microsoft.com/find-solutions/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;La KB834484 discute di possibili cause che provocano l’errore 1603 durante la fase di installazione.      &lt;br /&gt;Per maggiori informazioni, consultare l’articolo a questo link: &lt;a title="http://support.microsoft.com/kb/834484/" href="http://support.microsoft.com/kb/834484/"&gt;http://support.microsoft.com/kb/834484/&lt;/a&gt;&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Avvertenza&lt;/h3&gt;  &lt;p&gt;Il sottoscritto non si assume alcuna responsabilità derivante dall’esecuzione di attività descritte nel presente articolo.    &lt;br /&gt;Il contenuto dell’articolo è puramente indicativo e le azioni descritte devono essere vagliate caso per caso.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Buona giornata!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/b/itasupport/archive/2011/10/04/alessandro-caniglia.aspx"&gt;Alessandro Caniglia&lt;/a&gt;     &lt;br /&gt;Support Engineer     &lt;br /&gt;Microsoft Enterprise Platform Support&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3552173" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Windows+Team/">Windows Team</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Windows+XP/">Windows XP</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Alessandro+Caniglia/">Alessandro Caniglia</category></item><item><title>“The Back-End Service Model“</title><link>http://blogs.technet.com/b/itasupport/archive/2013/02/15/mariora-draft-the-back-end-service-model.aspx</link><pubDate>Thu, 14 Feb 2013 23:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3552471</guid><dc:creator>Supporto Tecnico Enterprise Italia</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/itasupport/rsscomments.aspx?WeblogPostID=3552471</wfw:commentRss><comments>http://blogs.technet.com/b/itasupport/archive/2013/02/15/mariora-draft-the-back-end-service-model.aspx#comments</comments><description>&lt;p&gt;Salve a tutti!&lt;/p&gt;  &lt;p&gt;Spero abbiate scaricato in tanti l’applicazione di esempio e l’abbiate provata. Non è nulla di eccezionale, ma vuole mostrare la strada per creare una applicazione client-server, dove il server è un servizio che gira in Sessione 0 e il client è una applicazione user mode. Questo è il cosiddetto “Back-End Service Model“.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Come funziona il servizio.&lt;/h3&gt;  &lt;p&gt;Il servizio è un banalissimo servizio Windows realizzato in VB.Net. All’avvio, crea una pipe con un nome random, e salva il nome in una chiave di registry predefinita, cosicchè quando i client verranno avviati, potranno andare a leggere il nome della pipe nel registry e potranno collegarsi a quella. Questa è solo una misura di sicurezza per evitare attacchi DOS (Denial of Service), a cui la vostra applicazione potrebbe essere soggetta, dato che avere un servizio che gira come Local System e che esegue qualunque comando/applicazione, potrebbe consentire un veloce EOP (“escalation of privilege”) ad un qualunque malaware che vi prenda di mira. Ovviamente potete migliorare moltissimo questa fase, creando un protocollo di handshaking complicato e cryptato a piacimento.&lt;/p&gt;  &lt;p&gt;Tenete sempre presente che qualora andaste a portare in produzione un’applicazione del genere, il rischio esiste, quindi dovete fare tutto il possibile per mitigare questa possibilità.&lt;/p&gt;  &lt;p&gt;Il thread principale del servizio in ascolto sulla pipe, quando riceve una chiamata da un client, ottiene il nome dello user e crea un nuovo thread che altro non fa che aprire una nuova pipe su cui da ora in poi andranno avanti le comunicazioni. La vecchia comunicazione viene interrotta e il server può rimettesi in ascolto per una nuova connessione. Al client viene inviato il nome della nuova pipe creata.&lt;/p&gt;  &lt;p&gt;Il client a questo punto tenterà di connettersi alla nuova pipe e se ci riesce il servizio gli invia indietro una stringa di controllo “START:” che significa che il client è connesso e può iniziare ad inviare comandi.&lt;/p&gt;  &lt;p&gt;Come vedete il resto del thread è molto semplicemente una grande Select Case dove si analizza il contenuto del comando ricevuto e si agisce di conseguenza, richiamando la funzione specifica.&lt;/p&gt;  &lt;p&gt;Oltre a questo, prima dell’avvio del pipe server, ho aggiunto la creazione di una form, che serve per gestire gli eventi relativi alle sesisoni.&lt;/p&gt;  &lt;p&gt;La WTSRegisterSessionNotificationEx e la WTSUnRegisterSessionNotificationEx prevedono espressamente di utilizzare un window handle per gestire i messaggi di tipo WM_WTSSESSION_CHANGE, che sono elencati in questa enumerazione:&lt;/p&gt;  &lt;p&gt;Public Enum WTS_SESSIONCHANGE_EVENT    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WTS_CONSOLE_CONNECT = 1     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WTS_CONSOLE_DISCONNECT     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WTS_REMOTE_CONNECT     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WTS_REMOTE_DISCONNECT     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WTS_SESSION_LOGON     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WTS_SESSION_LOGOFF     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WTS_SESSION_LOCK     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WTS_SESSION_UNLOCK     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WTS_SESSION_REMOTE_CONTROL     &lt;br /&gt;End Enum&lt;/p&gt;  &lt;p&gt;In questo modo, potremo sapere sempre quando accade un evento di quelli sopra elencati, ed eventualmente mantenere una lista in memoria dove, avremo elencati numero sessione e ultimo evento ricevuto, così da&amp;#160; poter sapere sempre in che stato si trova la sessione.. Locked o unlocked, collegata alla console o ad una sessione remota, ecc.. questo è l’unico modo per tenere traccia del fatto che una sesisone sia lockata o meno ad esempio.&lt;/p&gt;  &lt;p&gt;Per evitare che la finestra si chiudesse immediatamente dato che siamo in Sessione 0 e il sistema si rende conto che questa finestra non serve a nulla, ho implementato un trucchetto, creando un thread di attesa.. bruttissima come soluzione, ma funzionale..&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Conclusioni.&lt;/h3&gt;  &lt;p&gt;Quindi, riassumendo, abbiamo visto come il servizio può essere migliorato e di molto.. ad esempio implementando della sicurezza intorno alla creazione della pipe e/o cifrando il protocollo di comunicazione. Anche la creazione di una lista che mi dica sempre lo stato delle sessioni può essere una bella cosa.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Alla prossima!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/itasupport/pages/mario.raccagni.aspx" target="_blank"&gt;Mario Raccagni&lt;/a&gt;     &lt;br /&gt;Senior Support Engineer     &lt;br /&gt;Platform Development Support Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3552471" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Mario+Raccagni/">Mario Raccagni</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Platform+SDK/">Platform SDK</category></item><item><title>An authentication error occurred while communicating with the web server</title><link>http://blogs.technet.com/b/itasupport/archive/2013/02/15/an-authentication-error-occurred-while-communicating-with-the-web-server.aspx</link><pubDate>Thu, 14 Feb 2013 23:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3552484</guid><dc:creator>Supporto Tecnico Enterprise Italia</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/itasupport/rsscomments.aspx?WeblogPostID=3552484</wfw:commentRss><comments>http://blogs.technet.com/b/itasupport/archive/2013/02/15/an-authentication-error-occurred-while-communicating-with-the-web-server.aspx#comments</comments><description>&lt;p&gt;Dopo l’installazione della Service Pack 2 di .NET 2.0 (o della SP1 di .NET 3.5) tentando il debugging remoto di un’applicazione web per la quale utilizzare gli &lt;em&gt;&lt;a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/883a9544-3f70-4d46-a6df-bbadbd1fe7de.mspx?mfr=true" target="_blank"&gt;host headers&lt;/a&gt;&lt;/em&gt;, potreste incappare in questo errore:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Unable to start debugging on the web server. An authentication error occurred while communicating with the web server&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Il motivo è una modifica di sicurezza introdotta proprio da queste Service Pack: il comportamento di default è ora quello di utilizzare l’host name specificato nell’URL, in un SPN nel pacchetto di autenticazione NTLM; in altre parole facendo una richiesta all’indirizzo &lt;em&gt;http://myserver/myapp&lt;/em&gt;, l’SPN “&lt;em&gt;HTTP/myserver&lt;/em&gt;” viene aggiunto alle informazioni di autenticazione. Questa è una buona cosa dal punto di vista della sicurezza, ma con alcune conseguenze &lt;em&gt;sgradite&lt;/em&gt;…&lt;/p&gt;  &lt;p&gt;Il processo di autenticazione NTLM prevede un meccanismo di &lt;em&gt;challenge&lt;/em&gt; che parte dalla macchina di destinazione (il server web) ed ha come destinatario il client che ha fatto la richiesta iniziale; quando Windows riceve un &lt;em&gt;challenge&lt;/em&gt; che lui stesso ha generato, l’autenticazione fallisce a meno che la connessione non sia di tipo &lt;em&gt;loopback&lt;/em&gt;. Quando un sito ha un &lt;em&gt;host header&lt;/em&gt; configurato, l’host name non è ne il nome della macchia, ne l’indirizzo IP di &lt;em&gt;loop back&lt;/em&gt;, ne l’indirizzo IP della macchia, quindi l’autenticazione è destinata a fallire.&lt;/p&gt;  &lt;p&gt;Esistono due possibili soluzioni a questo problema:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;L’approccio raccomandato consiste nel mappare l’host header con il &lt;em&gt;look pack address&lt;/em&gt; nel registro di sistema, ecco come fare:       &lt;ul&gt;       &lt;li&gt;Cliccate su Start &amp;gt; Run, digitate &lt;em&gt;regedit&lt;/em&gt; e cliccate &lt;em&gt;OK&lt;/em&gt; &lt;/li&gt;        &lt;li&gt;Nell’editor del registro di sistema selezionate la chiave “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0” &lt;/li&gt;        &lt;li&gt;Create un nuovo valore di tipo &lt;em&gt;Multi-String&lt;/em&gt; e chiamatelo &lt;em&gt;BackConnectionHostNames&lt;/em&gt; &lt;/li&gt;        &lt;li&gt;Modificatene il valore digitando l’host name (potete inserire anche più di un nome) del sito o dei siti che si trovano sul server &lt;/li&gt;        &lt;li&gt;Riavviate IIS &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;La seconda soluzione, però meno sicura della precedente, consiste nel disabilitare il &lt;em&gt;loop back check&lt;/em&gt; come descritto in &lt;a href="http://support.microsoft.com/kb/896861"&gt;http://support.microsoft.com/kb/896861&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Per maggiori dettagli vi rimando al post &lt;a title="reporting-services-http-401-unauthorized-host-headers-require-your-attention.aspx" href="http://blogs.msdn.com/lukaszp/archive/2008/07/18/reporting-services-http-401-unauthorized-host-headers-require-your-attention.aspx"&gt;reporting-services-http-401-unauthorized-host-headers-require-your-attention.aspx&lt;/a&gt; (in inglese).&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/itasupport/pages/carlo-cardella.aspx" target="_blank"&gt;Carlo Cardella&lt;/a&gt;     &lt;br /&gt;Senior Support Engineer     &lt;br /&gt;EMEA IIS and Web Developer Support&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3552484" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Carlo+Cardella/">Carlo Cardella</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Visual+Studio/">Visual Studio</category></item><item><title>AppInit_DLL, novità in Windows 7 e 2008 R2</title><link>http://blogs.technet.com/b/itasupport/archive/2013/02/15/mariora-draft-appinit-dll-novit-in-windows-7-e-2008-r2.aspx</link><pubDate>Thu, 14 Feb 2013 23:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3552485</guid><dc:creator>Supporto Tecnico Enterprise Italia</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/itasupport/rsscomments.aspx?WeblogPostID=3552485</wfw:commentRss><comments>http://blogs.technet.com/b/itasupport/archive/2013/02/15/mariora-draft-appinit-dll-novit-in-windows-7-e-2008-r2.aspx#comments</comments><description>&lt;p&gt;Salve a tutti.&lt;/p&gt;  &lt;p&gt;AppInit_DLL è una delle infrastrutture disponibili nel sistema operativo per estendere le funzionalità di un programma, aggiungendo, o meglio, “iniettando” una dll all’interno di un processo.&amp;#160; La AppInit_DLL fornisce in modo semplice ed efficace la possibilità di caricare una dll custom all’interno di tutti i processi, e di rimpiazzare per mezzo di hook, le chiamate API di sistema, aggiungendo funzionalità, o anche solo per scopi di logging e/o tracing applicativo. Tipico esempio di questa funzionalità, gli antivirus.&lt;/p&gt;  &lt;p&gt;Come gli antivirus, anche i virus e i malware, hanno sfruttato questo principio, di per se molto semplice ed efficace. Per questo motivo, a partire da Windows Vista l’infrastruttura AppINit_DLL è disabilitata per default. Questo comportamento rimane invariato per Windows 7 e 2008 R2. Ma cosa cambia quando questa viene attivata?&lt;/p&gt;  &lt;p&gt;La configurazione della infrastruttura AppInit_DLL è controllata e regolata attraverso le chiavi di registry disponibili sotto:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT \CurrentVersion\Windows\&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;La seguente tabella mostra i possibili valori delle chiavi, e il loro significato:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="593" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="169"&gt;         &lt;p align="center"&gt;Valore&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="203"&gt;         &lt;p align="center"&gt;Descrizione&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="219"&gt;         &lt;p align="center"&gt;Valori di esempio&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="169" align="center"&gt;         &lt;p&gt;&lt;strong&gt;LoadAppInit_DLLs&lt;/strong&gt;             &lt;br /&gt;(REG_DWORD)&lt;/p&gt;       &lt;/td&gt;        &lt;td width="203"&gt;Valore che abilita/disabilita a livello globale AppInit_DLL&lt;/td&gt;        &lt;td valign="top" width="219"&gt;         &lt;p&gt;0x0 – AppInit_DLL è disabilitata.            &lt;br /&gt;0x1 – AppInit_DLL è abilitata.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="169"&gt;         &lt;p align="center"&gt;&lt;strong&gt;AppInit_DLLs&lt;/strong&gt;             &lt;br /&gt;(REG_SZ)&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="203"&gt;         &lt;p align="center"&gt;Lista di dll da caricare, delimitata da spazi o virgole. Il percorso completo deve essere specificato usando lo short file name.&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="219"&gt;         &lt;p align="center"&gt;C:\PROGRA~1\Test\Test.dll&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="169"&gt;         &lt;p align="center"&gt;&lt;strong&gt;RequireSignedAppInit_DLLs&lt;/strong&gt;             &lt;br /&gt;(REG_DWORD)&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="203"&gt;         &lt;p align="center"&gt;Richiede DLL firmate digitalmente.&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="219"&gt;         &lt;p align="left"&gt;0x0 – Carica ogni DLL.            &lt;br /&gt;0x1 – Carica solo DLL firmate digitalmente.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Le AppInit_DLL non vengono caricate all’interno dei processi protetti da DRM (Digital Right Management), e questo come è facile intuire non si può modificare/configurare. Inoltre, non verranno caricate in questi processi, considerati processi critici del Sistema:&lt;/p&gt;  &lt;p&gt;· Windows Defender.&lt;/p&gt;  &lt;p&gt;· Windows Software Licensing service.&lt;/p&gt;  &lt;p&gt;· Microsoft Hyper-V (vmms.exe and vmwp.exe).&lt;/p&gt;  &lt;p&gt;Durante un Upgrade da Vista a Windows 7, le dll che sono elencate nella chiave ApInit_DLL, non vengono migrate nel registry di Windows 7. Inoltre, durante Upgrade da sistemi operativi precedenti a Vista, le dll elencate non vengono nemmeno copiate nelle cartelle di sistema di Windows.&lt;/p&gt;  &lt;p&gt;Per default, Windows 7, per motivi di compatibilità, continuerà a caricare tutte le dll elencate in AppInit_DLL, indipendentemente dal fatto che queste siano firmate digitalmente o meno. Questo perchè per default, RequireSignedAppInit_DLLs è impostato a 0.&lt;/p&gt;  &lt;p&gt;Su Windows 2008 R2 invece, RequireSignedAppInit_DLLs è impostato a 1 per default, e quindi solo le librerie firmate digitalmente verranno caricate. Bisogna anche considerare la bitness delle DLL, visto che 2008 R2 è solo a 64 bit. Non si può caricare una dll a 32 bit in un processo a 64 bit e viceversa.. &lt;/p&gt;  &lt;p&gt;Microsoft raccomanda a tutti gl sviluppatori di estensioni che usano l’infrastruttura AppInit_DLL di iniziare a firmare digitalmente le librerie, perchè in futuro diventerà obbligatorio.&lt;/p&gt;  &lt;h5&gt;&lt;/h5&gt;  &lt;h3&gt;&lt;a title="_Toc229998944" name="_Toc229998944"&gt;&lt;/a&gt;&lt;a title="_Toc220918113" name="_Toc220918113"&gt;&lt;/a&gt;&lt;font color="#000000"&gt;Developer Best Practices&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;Cosa devono fare gli sviluppatori per assicurarsi che le loro estensioni funzionino al meglio e siano caricate in Windows 7 (e sistemi successivi):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Firmare digitalmente le DLL.      &lt;br /&gt;Versioni successive di Windows caricheranno solo DLL firmate digitalmente, e non sarà disponibile una chiave di registry per configurare questo comportamento. Sarà &lt;strong&gt;obbligatorio&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;Caricare le DLL solo nel processo richiesto e non in tutti i processi indistintamente.      &lt;br /&gt;L’infrastruttura AppInit_DLL carica le dll elencate nella chiave di registry in tutti i processi al loro avvio. Se la DLL è pensata per funzonare solo all’interno di un determinato processo, allora bisogna chiamare dall’interno della DLLMain, la GetModuleFileName, per recuperare il nome del processo che ci sta caricando. Se non è quello che ci interessa, bisogna semplicemente ritornare e non proseguire nel caricamento. &lt;/li&gt;    &lt;li&gt;Durante la fase di inizializzazione, chiamare solo API esportate da Kernel32.dll.      &lt;br /&gt;Ricordando il fatto che questa infrastruttura consente di caricare DLL in “TUTTI” i processi, anche durante l’avvio del sistema operativo stesso, durante la fase di inizializzazione, ci si potrebbe trovare in una fase talmente embrionale del caricamento del sistema operativo, che molte funzionalità non saranno ancora disponibili. Per questo motivo è buona norma chiamare solo API contenute in Kernel32.dll, che sarà probabilmente l’unica dll già caricata in memoria nel processo in cui stiamo venendo caricati. Nulla impedisce di inizializzare un altro thread, la cui prima operazione è una sleep di qualche secondo, dando così modo alla dll di essere caricata senza problemi in qualunque processo senza causare problemi di loader lock durante l’inizializzazione, che come sempre deve essere il più atomica possibile. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;   &lt;br /&gt;Per tutti gli aspetti legati alla firma digitale e al testing nel sistema operativo vi rimando al documento ufficiale:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/whdc/driver/install/AppInit-Win7.mspx" target="_blank" mce_href="http://www.microsoft.com/whdc/driver/install/AppInit-Win7.mspx"&gt;http://www.microsoft.com/whdc/driver/install/AppInit-Win7.mspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Siamo così arrivati in prossimità delle festività natalizie. E’ stata una bella corsa. I Vostri feedback ci diranno se interessante o meno. Per il momento grazie per averci seguito e mi raccomando non abbiate paura di fare domande, di dare feedback, di interagire con noi. Siamo qui per aiutarvi possibilmente.&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000" size="4"&gt;A nome del Supporto Tecnico agli Sviluppatori di Microsoft Italia, auguro a tutti un Buon Natale e un Felice Anno nuovo!&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Alla prossima!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/itasupport/pages/mario.raccagni.aspx" target="_blank" mce_href="http://blogs.msdn.com/itasupport/pages/mario.raccagni.aspx"&gt;Mario Raccagni&lt;/a&gt;     &lt;br /&gt;Senior Support Engineer     &lt;br /&gt;Platform Development Support Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3552485" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Mario+Raccagni/">Mario Raccagni</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Platform+SDK/">Platform SDK</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Informazioni/">Informazioni</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/General/">General</category></item><item><title>ASP.NET application: alta CPU per un difetto di sincronizzazione accedendo ad una variabile globale.</title><link>http://blogs.technet.com/b/itasupport/archive/2013/02/15/asp-net-application-alta-cpu-per-un-difetto-di-sincronizzazione-accedendo-ad-una-variabile-globale.aspx</link><pubDate>Thu, 14 Feb 2013 23:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3552486</guid><dc:creator>Supporto Tecnico Enterprise Italia</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/itasupport/rsscomments.aspx?WeblogPostID=3552486</wfw:commentRss><comments>http://blogs.technet.com/b/itasupport/archive/2013/02/15/asp-net-application-alta-cpu-per-un-difetto-di-sincronizzazione-accedendo-ad-una-variabile-globale.aspx#comments</comments><description>&lt;p&gt;Salve a tutti.&lt;/p&gt;  &lt;p&gt;Vediamo oggi un interessante caso di alta CPU.    &lt;br /&gt;Siamo di fronte ad una applicazione ASP.NET 2.0 che, pur funzionando bene solitamente, di tanto in tanto rallenta improvvisamente e la CPU si innalza al di sopra del 80% di utilizzo.&lt;/p&gt;  &lt;p&gt;Come al solito generiamo dei log con Performance Monitor che ci mostrino l’andamento della CPU usata dal processo durante la giornata. I seguenti counters ci aiuteranno a capire se la CPU è in qualche modo correlata al carico in termini di utenti connessi (Requests Current), o con le Collection del Garbage Collector (%Time in GC), o ancora all’ammontare di bytes allocati nell’unità di tempo (Allocated Bytes/Sec), o ancora a vedere in quanto tempo mediamente vengono servite le richieste (Request Execution Time), e tanto altro.&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right: silver 1px solid; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; width: 97.5%; background-color: #f4f4f4"&gt;   &lt;pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"&gt;•    Performance Object : Process     -  Counters : Private Bites, %Privilaged Time, %User Time, %Processor Time, ID Process - Instances : any existing inentinfo.exe, w3wp.exe, aspnet_wp.exe and dllhost.exe  &lt;br /&gt;•    Performance Object : Processor   -  Counters : Processor Time - Instances : _Total&lt;br /&gt;•    Performance Object : Memory      -  Counters : Committed Bytes&lt;br /&gt;•    Performance Object : ASP.NET vX.X-  Counters : All Counter  (where vX.X is the version you are running on)&lt;br /&gt;•    Performance Object : ASP.NET Apps vx.x-  Counters : All Counter (where vX.X is the version you are running on)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Con i &lt;a href="http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx" target="_blank"&gt;Debugging Tools for Windows&lt;/a&gt;, eseguiamo il seguente comando quando la CPU risulta essere sotto stress:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;b&gt;cscript adplus.vbs -quiet -hang -r 3 30 -p &amp;lt;PID&amp;gt;&lt;/b&gt;&amp;#160;&amp;#160; usando il PID del processo in questione&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Questo comando genererà 3 memory dump alla distanza di 30 secondi l’uno, che andremo poi ad analizzare.&lt;/p&gt;

&lt;p&gt;Come prima cosa eseguiremo il comando !runaway su tutti e 3 i dump. Questo comando ci dice quanti secondi CPU hanno usato i singoli thread a partire da quanto il processo è stato avviato. Per avere un dato significativo dobbiamo confrontare l’output del comando sui 3 dump e calcolare la differenza per capire quanti secondi sono stati spesi dai thread tra un dunmp e l’altro. Andremo ad analizzare i thread che hanno lavorato per più secondi.&lt;/p&gt;

&lt;p&gt;Un esempio di output:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right: silver 1px solid; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; width: 97.5%; background-color: #f4f4f4"&gt;
  &lt;pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"&gt;0:000&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; !runaway&lt;br /&gt; User Mode Time&lt;br /&gt;  Thread       Time&lt;br /&gt;  98:2fec      0 days 0:41:05.515&lt;br /&gt;  85:2cf0      0 days 0:40:58.109&lt;br /&gt;  93:904       0 days 0:39:08.484&lt;br /&gt; 103:1fd8      0 days 0:35:22.171&lt;br /&gt;  31:29a4      0 days 0:32:48.312&lt;br /&gt; 109:2924      0 days 0:31:10.515&lt;br /&gt;  23:16e0      0 days 0:29:10.953&lt;br /&gt; 113:79c       0 days 0:27:26.687&lt;br /&gt;  99:1424      0 days 0:17:58.750&lt;br /&gt;  94:1fa0      0 days 0:17:55.734&lt;br /&gt; 122:1898      0 days 0:13:23.593&lt;br /&gt; 123:26b4      0 days 0:12:54.312&lt;br /&gt; 117:ca4       0 days 0:12:44.343&lt;br /&gt; 114:23b4      0 days 0:12:12.406&lt;br /&gt; 100:2904      0 days 0:11:19.750&lt;br /&gt;  91:f24       0 days 0:09:45.593&lt;br /&gt; 125:f34       0 days 0:09:43.187&lt;br /&gt;  29:1088      0 days 0:09:35.406&lt;br /&gt;  37:22d0      0 days 0:09:34.515&lt;br /&gt;  83:1410      0 days 0:09:32.890&lt;br /&gt;&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Nel caso che stiamo rivedendo, usando il comando SOS.ClrStack, vediamo il callstack managed (ossia .NET) dei thread più occupati:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right: silver 1px solid; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; width: 97.5%; background-color: #f4f4f4"&gt;
  &lt;pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"&gt;0:98&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; !clrstack&lt;br /&gt;OS Thread Id: 0x27dc (124)&lt;br /&gt;ESP       EIP     &lt;br /&gt;2f77ed24 795b3c5c System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib],[System.__Canon, mscorlib]].FindEntry(Int32)&lt;br /&gt;2f77ed3c 795b3835 System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib],[System.__Canon, mscorlib]].ContainsKey(Int32)&lt;br /&gt;2f77ed40 209f1932 MyApp.MyFunc1()&lt;br /&gt;2f77ed58 209f1815 MyApp.MyFunc2()&lt;br /&gt;2f77ed70 209f163e MyApp.MyFunc3(Boolean)&lt;br /&gt;2f77ed80 209f1453 ASP.site_master.__BuildControlform1()&lt;br /&gt;2f77ed90 209f0a7b ASP.site_master.__BuildControlTree(ASP.site_master)&lt;br /&gt;2f77eda0 209f098c ASP.site_master.FrameworkInitialize()&lt;br /&gt;2f77eda8 661565a0 System.Web.UI.UserControl.InitializeAsUserControlInternal()&lt;br /&gt;2f77edb0 66345fd9 System.Web.UI.MasterPage.CreateMaster(System.Web.UI.TemplateControl, System.Web.HttpContext, System.Web.VirtualPath, System.Collections.IDictionary)&lt;br /&gt;2f77ee04 66147cd1 System.Web.UI.Page.get_Master()&lt;br /&gt;2f77ee0c 6614a137 System.Web.UI.Page.ApplyMasterPage()&lt;br /&gt;2f77ee1c 6614de3e System.Web.UI.Page.ProcessRequestMain(Boolean, Boolean)&lt;br /&gt;2f77f018 6614d8c3 System.Web.UI.Page.ProcessRequest(Boolean, Boolean)&lt;br /&gt;2f77f050 6614d80f System.Web.UI.Page.ProcessRequest()&lt;br /&gt;2f77f088 6614d72f System.Web.UI.Page.ProcessRequestWithNoAssert(System.Web.HttpContext)&lt;br /&gt;2f77f090 6614d6c2 System.Web.UI.Page.ProcessRequest(System.Web.HttpContext)&lt;br /&gt;2f77f0a4 209f7545 ASP.MyPage_aspx.ProcessRequest(System.Web.HttpContext)&lt;br /&gt;2f77f0a8 65fe6bfb System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()&lt;br /&gt;2f77f0dc 65fe3f51 System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)&lt;br /&gt;2f77f11c 65fe7733 System.Web.HttpApplication+ApplicationStepManager.ResumeSteps(System.Exception)&lt;br /&gt;2f77f16c 65fccbfe System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(System.Web.HttpContext, System.AsyncCallback, System.Object)&lt;br /&gt;2f77f188 65fd19c5 System.Web.HttpRuntime.ProcessRequestInternal(System.Web.HttpWorkerRequest)&lt;br /&gt;2f77f1bc 65fd16b2 System.Web.HttpRuntime.ProcessRequestNoDemand(System.Web.HttpWorkerRequest)&lt;br /&gt;2f77f1c8 65fcfa6d System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr, Int32)&lt;br /&gt;2f77f3d8 79f047fd [ContextTransitionFrame: 2f77f3d8] &lt;br /&gt;2f77f40c 79f047fd [GCFrame: 2f77f40c] &lt;br /&gt;2f77f568 79f047fd [ComMethodFrame: 2f77f568] &lt;br /&gt;&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Le funzioni dell’applicazione (che ho rinominato in MyApp.MyFunc) stanno lavorando con un oggetto Dictionary cercando un elemento:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;System.Collections.Generic.&lt;strong&gt;Dictionary&lt;/strong&gt;`2[[System.Int32, mscorlib],[System.__Canon, mscorlib]].&lt;strong&gt;FindEntry&lt;/strong&gt;(Int32) 

    &lt;br /&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Già di per sé, se il Dictionary contenesse un numero molto elevato di Items, questa operazione potrebbe richiedere molta CPU. Nel nostro caso però l’oggetto sembrava avere solo pochi elementi.&lt;/p&gt;

&lt;p&gt;Usando il comando !dso (sempre della SOS extension), è possibile vedere l’indirizzo del Dictionary (e di tutti gli altri oggetti usati dal thread, che però rimuovo dall’output sottostante):&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right: silver 1px solid; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; width: 97.5%; background-color: #f4f4f4"&gt;
  &lt;pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"&gt;0:022&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; !dso&lt;br /&gt;OS Thread Id: 0x2c30 (22)&lt;br /&gt;ESP/REG  Object   Name&lt;br /&gt;esi      1728e9fc System.Collections.Generic.Dictionary`2&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;A questo punto possiamo vedere, tramite il comando !GCRoot, se questo oggetto è dichiarato come variabile locale del thread (avremo solo rooting che partono dal trhead local storage), oppure se è una varabile ‘strongly rooted’ che dunque sopravvive al thread ed ha application life scope.&lt;/p&gt;

&lt;p&gt;Effettivamente il nostro Dictionary risulta essere strongly rooted, ed è inserito in una array di Objects. Tali array sono usate dal runtime per tenere traccia delle variabili statiche. &lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="overflow: auto; cursor: text; font-size: 8pt; border-top: silver 1px solid; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right: silver 1px solid; border-bottom: silver 1px solid; padding-bottom: 4px; direction: ltr; text-align: left; padding-top: 4px; padding-left: 4px; margin: 20px 0px 10px; border-left: silver 1px solid; line-height: 12pt; padding-right: 4px; width: 97.5%; background-color: #f4f4f4"&gt;
  &lt;pre id="codeSnippet" style="border-top-style: none; overflow: visible; font-size: 8pt; border-left-style: none; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-bottom-style: none; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; border-right-style: none; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: #f4f4f4"&gt;0:022&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; !gcroot 1728e9fc &lt;br /&gt;Note: Roots found on stacks may be false positives. Run &amp;quot;!help gcroot&amp;quot; for&lt;br /&gt;more info.&lt;br /&gt;........&lt;br /&gt;.cutting.&lt;br /&gt;........&lt;br /&gt;DOMAIN(09671470):HANDLE(Pinned):e5411ec:Root:  20120410(System.Object[])-&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 1728e9fc(System.Collections.Generic.Dictionary`2&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;Dunque il nostro Dictionary è una variabile statica e come tale è accessibile da diversi thread contemporaneamente.&lt;/p&gt;

&lt;p&gt;A questo punto, il dubbio che ci è sorto, è che l’accesso al Dictionary non fosse&amp;#160; sincronizzato opportunamente. Analizzando le funzioni che vi accedevano l’ipotesi è stata confermata.&lt;/p&gt;

&lt;p&gt;In pratica quello che succedeva era che, mentre un thread lavorava con il Dizionario cercando un elemento, un altro thread accedeva anch’esso allo stesso Dizionario e ne cambiava il numero e la posizione degli elementi. Così facendo si creavano situazioni instabili e la ricerca di un elemento poteva andare avanti all’infinito usando tanta CPU.&lt;/p&gt;

&lt;p&gt;D’altra parte la documentazione avverte sul fatto che la Classe dictionary non è threadsafe e chi la usa in ambiente multythreaded deve preoccuparsi della sincronizzazione:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/xfhwa508(VS.80).aspx" href="http://msdn.microsoft.com/en-us/library/xfhwa508(VS.80).aspx"&gt;http://msdn.microsoft.com/en-us/library/xfhwa508(VS.80).aspx&lt;/a&gt; 

    &lt;br /&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;A &lt;b&gt;Dictionary&lt;/b&gt; can support multiple readers concurrently, as long as the collection is not modified. Even so, enumerating through a collection is intrinsically not a thread-safe procedure. In the rare case where an enumeration contends with write accesses, the collection must be locked during the entire enumeration. To allow the collection to be accessed by multiple threads for reading and writing, you must implement your own synchronization.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;E’ stato sufficiente sincronizzare gli accessi, racchiudendoli in un blocco Lock{}, per risolvere il problema.&lt;/p&gt;

&lt;p&gt;Alla prossima&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/itasupport/pages/stefano-pronti.aspx" target="_blank"&gt;Stefano Pronti&lt;/a&gt; 

  &lt;br /&gt;Senior Support Engineer 

  &lt;br /&gt;EMEA IIS and Web Developer Support Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3552486" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Debugging/">Debugging</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/Stefano+Pronti/">Stefano Pronti</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/ASP-NET/">ASP.NET</category><category domain="http://blogs.technet.com/b/itasupport/archive/tags/-NET+Compact+Framework/">.NET Compact Framework</category></item></channel></rss>