During my day to day work, I frequently find useful information, from various blogs spread all over the Internet. In order to avoid others repeating my same researches, I decided to share my findings in this blog, with no claiming to be exhaustive nor teaching anything to anyone. These postings are provided 'AS IS' with no warranties, and confer no rights. The views expressed on this weblog are mine alone.
lunedì 30 settembre 2013
mercoledì 25 settembre 2013
Italian Agile Days 2013
IAD2013 ... Uncovering better ways of developing software
martedì 16 luglio 2013
Could not load file or assembly Microsoft.Practices.EnterpriseLibrary.Logging exception
C# 4.0, MS
Practices Enterprise Library 5.0
I have used
the Enterprise Library Configuration tool for creating a Logging Application
Block and I have obtained a configuration file like this:
<section
name="loggingConfiguration"
type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings,
Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
<loggingConfiguration
name="" tracingEnabled="true"
defaultCategory="General">
…
…
</loggingConfiguration>
Unfortunately,
I got the following exception while trying to use the Enterprise Library
Logging Application Block:
“An error occurred creating the configuration
section handler for validation: Could not load file or assembly
'Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The
located assembly's manifest definition does not match the assembly reference.
(Exception from HRESULT: 0x80131040)”
I solved this
problem by setting to null the PublicKeyToken.
PublicKeyToken=null
Etichette:
DotNet,
Microsoft Practices Enterprise Library
giovedì 4 luglio 2013
Retrieving data from a SQL Server stored procedure using LINQ to entities
C# .NET
Framework 4.0, SQL Server 2008, ADO.NET Entity Data Model, LINQ to Entities
I’ve a GetCompanies SQL Server 2008 stored procedure that returns a resultset like this
|
Field1
|
Field2
|
Field3
|
Field4
|
Field5
|
Field6
|
Field7
|
Field8
|
|
VE
|
7471
|
033333333
|
Environment s.r.l.
|
1
|
Roma, 6
|
Vigonza
|
35010
|
|
VE
|
7499
|
033333322
|
Active s.r.l.
|
4
|
Venezia, 8
|
Padova
|
35100
|
So, in my
application I want to read this resultset data using LINQ to Entities.
1. Add a new ADO.NET Entity Data Model (Shapshot.edmx)
at the solution.
2. Follow the wizard for creating a new
connection to your database and select the GetCompanies (for this example)
stored procedure from the objects list.
3. Click on Model Browser.
4. Select the SnapshotModel tree,
ComplexTypes.
a. Right click on CopmplexTypes and
then click on “Add new Complex Type”.
b. Type a name, for example “CompanyEntity”.
i.
Select
CompanyEntity, right click on “Add” -> “Scalar Property” and select the type
property: Int32, String, Boolean and so on.
ii.
In
my example I obtain a structure like this
1. Field1 -> String
2. Field2 -> Int32
3. Field3 -> String
4. Field4 -> String
5. Field5 -> Int32
6. Field6 -> String
7. Field7 -> String
8. Field8 -> String
c. Expand the Function Imports folder
and double click on GetCompanies stored procedure, you‘ll see a dialog box like
this. Select the “Complex” option button and then the type that you have
created before.
5. Now, you can retrieve data using
this C# code (Company is an internal object).
GetCompanies() returns a System.Data.Objects.ObjectResult<CompanyEntity>
object.
public Company[] GetCompanies()
{
var companiesList = new List<Company>();
using (var context = new SnapshotEntities())
{
var query = context.GetCompanies();
foreach (var c in query)
{
var company = new Company
{
Field1 = c.Field1,
Field2 = c.Field2,
Field3 = c.Field3,
Field4 = c.Field4,
Field5 = c.Field5,
Field6 = c.Field6,
Field7 = c.Field7
Field8 = c.Field8
};
companiesList.Add(company);
}
}
return companiesList.ToArray();
}
That’s all folk!
lunedì 1 luglio 2013
Rebuild Enterprise Library 5.0 (script error)
Windows 7
Professional 64 bit
After I ‘ve
downloaded the Microsoft Enteprise Libray 5.0, I wanted to rebuild all
assemblies by ..\EntLib50Src\Scripts\BuildLibrary.bat script, but I received
following error: “The specified solution configuration Debug|BPC is invalid. Please specify a
valid solution configuration using the Configuration and Platform properties
(e.g. MSBuild.exe Solution.sln /p:Configuration=Debug /p:Platform=”Any CPU”) or
leave those properties blank to use the default solution configuration."
So, in the
2013 if you want resolve this problem you MUST delete a key registry.
Using
regedit.exe navigate to the registry path
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
Manager\Environment
and select
the key Platform. Platform had
the value BPC.
Then you delete only the value BPC. After this,
the key Platform was still there but empty. Close Regedit, restart your PC and
run the BuildLibrary.bat script.
giovedì 30 maggio 2013
Daily log file using the Microsoft Practices Enterprise Library Logging
C# 4.0, Microsoft Practices Enterprise Library 5.0
When you implement a Microsoft Practices Enterprise Library Logging, maybe you could need to distinguish the file logging by date and for to do this you can follow these traces.
When you implement a Microsoft Practices Enterprise Library Logging, maybe you could need to distinguish the file logging by date and for to do this you can follow these traces.
1. Open the configuration file (like
app.config) and search the “listeners”
element near “loggingConfiguration”,
set the “add”
element’s attribute “fileName”
in this way.
<add fileName="C:\Project\logs\Project.log"
header="----------------------------------------"
footer="----------------------------------------"
formatter="Text Formatter"
listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData,
Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35" traceOutputOptions="DateTime"
filter="All"
type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener,
Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="RollingFile
TraceListener" rollFileExistsBehavior="Increment"
rollInterval="Day" rollSizeKB="0"
timeStampPattern="yyyy-MM-dd"/>
2. Search the “listeners” element near “categorySources”, set
the “add” element’s
attribute “name” to
“RollingFile
TraceListener”.
<add name="RollingFile
TraceListener"/>
3. Search the “listeners” element near “specialSources”, set the
“add” element’s
attribute “name” to
“RollingFile
TraceListener”.
<add name="RollingFile TraceListener"/>
In this way
you obtain a log file similar this:
Project.2012-08-20.1.log
mercoledì 17 aprile 2013
POST WebRequest e Content-Type
C# 2.0
Dovevo effettuare una richiesta POST ad un Url passando alcuni
parametri e per far questo ho utilizzato le seguenti righe di codice:
string url = "http://pippo.it/api";
WSSEDigest wsseDigest = new WSSEDigest();
string token = wsseDigest.GetPasswordDigestAsBase64(userName,
password);
HttpWebRequest webReq = (HttpWebRequest) WebRequest.Create(url);
webReq.Method = "POST";
webReq.Headers["X-WSSE"] = token;
webReq.ContentType = "application/x-www-form-urlencoded";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(uriRequestBurn.Parameters);
Stream requestParametersStream = webReq.GetRequestStream();
requestParametersStream.Write(data, 0, data.Length);
requestParametersStream.Close();
try
{
HttpWebResponse webResp = (HttpWebResponse) webReq.GetResponse();
Stream answer = webResp.GetResponseStream();
StreamReader answerReader = new StreamReader(answer);
string responseContent = answerReader.ReadToEnd();
}
catch (WebException ex)
{
Stream answer = ex.Response.GetResponseStream();
StreamReader answerReader = new StreamReader(answer);
string message = ex.Message;
string responseContent = answerReader.ReadToEnd();
}
Inizialmente non specificavo il content-type ed avevo la
seguente anomalia: per alcune chiamate tutto andava bene per altre invece mi
ritornava sempre una Web Eception, anche analizzando il flusso dati con Fiddler
tutto mi sembrava corretto, i parametri sembravano
sempre valorizzati allo stesso modo, peccato però che dalla parte del servizio
arrivasse, in questo caso, sempre un array vuoto.
Alla fine grazie al Plug-In Poster di Firefox sono riuscito a capire che il problema
stava nel Content-Type.
Iscriviti a:
Post (Atom)
