venerdì 14 dicembre 2012

Come recuperare una particolare sezione del web.config

C# 4.0

Ogni volta che devo leggere una particolare sezione del file di configurazione web.config devo sempre effettuare varie ricerche su google, a questo punto per evitarmi ed evitare (eventualmente) a qualcun altro questo tipo di ricerca ecco qualche utile consiglio.
Questa la sezione del web.config interessata ed evidenziato in giallo il valore da recuperare:

<configuration>
  
  <applicationSettings>   
    <Importer.RestService.Properties.Settings>
      <setting name="Importer.RestService_ImporterService_WsImporter" serializeAs="String">
        <value>http://192.168.1.108/Importer.Services/Importer.asmx</value>
      </setting>
    </Importer.RestService.Properties.Settings>
  </applicationSettings>
</configuration>

Questo il codice che ho utilizzato:
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");

ApplicationSettingsGroup applicationSettingsGroup = (ApplicationSettingsGroup) config.GetSectionGroup("applicationSettings");

ClientSettingsSection clientSettingsSection = (ClientSettingsSection)        applicationSettingsGroup.Sections["Importer.RestService.Properties.Settings"];
                   
SettingElement settingElement =                           clientSettingsSection.Settings.Get("Importer.RestService_ImporterService_WsImporter");

string url = settingElement.Value.ValueXml.FirstChild.Value;


mercoledì 19 settembre 2012

Deframmentazione degli indici (SQL Server)

SQL Server 2005

Alcuni problemi di query time-out possono essere riconducibili ad una alta frammentazione degli indici del database: una frammentazione superiore al 50% può causare un sensibile calo delle prestazioni.
Per capire se gli indici sono frammentati e poi ricostruirli, eseguire i passi sotto elencati:

-- Per visualizzare la frammentazione degli indici del db
SELECT OBJECT_NAME(OBJECT_ID), index_id,index_type_desc,index_level,
      avg_fragmentation_in_percent,avg_page_space_used_in_percent,page_count
FROM sys.dm_db_index_physical_stats
(DB_ID(N'OrangeFidelity'), NULL, NULL, NULL , 'SAMPLED')
ORDER BY avg_fragmentation_in_percent DESC

-- Per una query più specifica che comprenda il nome delle tabelle presenti nel db in esame


SELECT OBJECT_NAME(a.OBJECT_ID) Tabella, index_id,index_type_desc,index_level,
      avg_fragmentation_in_percent,avg_page_space_used_in_percent,page_count
FROM sys.dm_db_index_physical_stats
(DB_ID(N'OrangeServer'), NULL, NULL, NULL , 'SAMPLED') a INNER JOIN sys.objects b  on a.object_id = b.object_id
WHERE b.type_desc = 'USER_TABLE'
ORDER BY Tabella, avg_fragmentation_in_percent DESC


-- ESEGUIRE PRIMA UN BACKUP !!! ---

-- Ricostruisce gli indici della tabella DocumentReference in OrangeFidelity
USE OrangeFidelity
ALTER INDEX ALL ON DocumentReference
REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
              STATISTICS_NORECOMPUTE = ON);

-- Ricostruisce gli indici della tabella FidelityHandling in OrangeFidelity
USE OrangeFidelity
ALTER INDEX ALL ON FidelityHandling
REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
              STATISTICS_NORECOMPUTE = ON);

Naturalmente queste istruzioni possono essere eseguite per tutte le tabelle dei vari db.

Maggiori informazioni su SQL SERVER – Fragmentation  

Credits: grazie anche al prezioso "intuito informatico" del mitico Giò ;-)

venerdì 3 agosto 2012

Usare Fiddler2 con localhost


Windows 7 64 bit
Ci sono diversi modi per analizzare con Fiddler2 le chiamate fatte su localhost, a questo indirizzo http://stackoverflow.com/questions/826134/how-to-display-localhost-traffic-in-fiddler-while-debugging-an-asp-net-applicati se ne possono trovare alcuni. Stranamente però nessuno di questi metodi funzionava nel mio pc.

Alla fine tra le opzioni di Fiddler2 ho notato questa dialog box

Così nel mio codice c#, utilizzando CodeScales (http://www.codescales.com/) come HTTP client ho aggiunto la seguente riga evidenziata in giallo:
HttpClient client = new HttpClient();
HttpPost postMethod = new HttpPost(new Uri("http://localhost:52056/api/prototype"));
client.Proxy = new Uri("http://127.0.0.1:8888");

ed in questo modo sono riuscito a fare un capture della mia chiamata verso un servizio REST.

venerdì 11 maggio 2012

VMWare Player Setup e Windows 7 64 bit

Dovevo installare VMWare Player nel mio pc con Windows 7 a 64 bit. Ma non appena eseguivo il setup compariva una finestra grigia e dopo un po’ l’applicazione andava in hang up.
Dopo diversi tentativi e cercando in rete (http://communities.vmware.com/thread/291034) ho scoperto che bisognava modificare il registry di windows, eh si … siamo nel 2012 e bisogna ancora metter mano nel registro di windows e questo perché uno degli aggiornamenti di Microsoft modificano le impostazioni di zona di Internet nel Registro di sistema, ed è per questo che Javascript non è più chiamato dalle applicazioni.

Detto questo si deve aprire l'editor del registro

>>> (Start> Esegui> Regedit.exe)

e cercare la voce

>>> HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones \

Ci dovrebbero essere alcune cartelle 0, 1, 2, 3 e 4. Nel mio caso c’era una cartella denominata "L" prima dello 0.
Se c’è questa cartella "L" si deve eliminarla e riavviare il sistema.

Successivamente il programma di installazione dovrebbe funzionare correttamente.