WCF exception: Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service.

Security settings for this service require ‘Anonymous’ Authentication but it is not enabled for the IIS application that hosts this service.


This error occurred, because I had an endpoint configured in mine wcf service web.config with a identity tag, as shown below:

<endpoint address="" binding="wsHttpBinding" contract="Tpp.Pegaso.MaintenanceService.IMaintenanceService">
<dns value="localhost"/>

This identity element should be removed or replaced to reflect the identity under which the deployed service runs. If removed, WCF will infer an appropriate identity automatically.

To avoid disclosing metadata information, I set the serviceMetadata httpGetEnabled to false:

<serviceMetadata httpGetEnabled="true"/>

and removed the mex endpoint:

<endpointaddress="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

ASP .NET error: No protocol binding matches the given address 'http://…./ImportService.svc'. Protocol bindings are configured at the Site level in IIS or WAS configuration.

I got the asp .net error: No protocol binding matches the given address ‘http://…./ImportService.svc’. Protocol bindings are configured at the Site level in IIS or WAS configuration, because I did not do an iisreset after I changed the website binding (I added a hostheader).


Display used and free space with TSQL in Microsoft SQL Server 2008 mdf and ldf file

To calculate the "size", "used size in" and "free space in" a Microsoft SQL Server 2008 mdf or ldf file use:

use master

name, cast((size/128.0) as int) as TotalSpaceInMB, cast((cast(fileproperty(name, 'SpaceUsed') as int)/128.0) as int) as UsedSpaceInMB, cast((size/128.0 - cast(fileproperty(name, 'SpaceUsed') AS int)/128.0) as int) as FreeSpaceInMB from sys.database_files



For more information on fileproperty, see: http://msdn.microsoft.com/en-us/library/ms188401.aspx

Import data from Microsoft Office Access 2007 to Microsoft SQL Server 2008

There are several ways to import data from Microsoft Office Access to Microsoft SQL Server, but I decided to import de data from Microsoft Access into a Microsoft SQL Server table with "the same" columns and types and made all columns nullable to avoid import errors and then created a TSQL script to move the data to the destination table with different columns and types. This was, because I know a lot about Microsoft SQL Server and less about Microsoft Access.

Table in Microsoft Access

Import Table in Microsoft SQL Server
create table dbo.PostcodeImport
Id int not nullidentity(1,1)primary key,
Postcode varchar(6) null,
Series varchar(1) null,
[Huisnummer van] int,
[Huisnummer t/m] int,
Plaats varchar(24) null,
Straat varchar(28) null

To import the data in the "PostcodeImport" table:
> Open Microsoft SQL Server 2008 Management Studio
> Right click you’re database > Tasks > Import Data …
> On SQL Server Import and Export Wizard screen 1 click Next
> On SQL Server Import and Export Wizard screen 2 choose Data source: Microsoft Access
    Then click on Browse to select the Microsoft Access file
> On SQL Server Import and Export Wizard screen 3 choose Destination: SQL Server native Client 10.0, the enter you’re SQL Server name.
> Enter the database name
> On SQL Server Import and Export Wizard screen 4 choose "Copy data from one or more tables or views"
> On SQL Server Import and Export Wizard screen 5 choose Source table "Postcode" and destination table "PostcodeImport"
> We don’t have to edit the column mappings, because the columns have the same names and types
> Click on Next
> On SQL Server Import and Export Wizard screen 6 click Next
> On SQL Server Import and Export Wizard screen 7 click Next
> On SQL Server Import and Export Wizard screen 8 click Finish
> Click on Close

Use a TSQL script to move the data from the PostcodeImport table to the Postcode table

insert into
Postcode (Postcode,Straatnaam,Plaats,RangeStart,RangeEind,PostcodetypeId)
select distinct p.Postcode,p.Straat,p.Plaats,p.[Huisnummer van],p.[Huisnummer t/m],
cast (
p.Series =‘ ‘ then1
        when p.Series is null then1
        when p.Series =then1
        else p.Series
as int
from PostcodeImport p

Microsoft Office Sharepoint Server Automaticly sign-on with Windows Username and password


in IE, go to Internet options.  go to the security tab.  highlight Local Intranet and then click Custom Level.  at the bottom of the settings, make sure "automatic logon with current user name and password" is selected.  then click ok.  make sure Local Intranet is still highlighted and click the button called Sites.  in IE 7, i see a box that has an Advanced button.  click Advanced.  in IE 6, i think it just takes you to that page where you can verify that your sharepoint site is listed.  if it’s not listed, add it in.

IE will then automatically log users in.

Shortcut Collapse project or projects in the Solution Explorer Microsoft Visual Studio 2008

The standard windows keyboard shortcuts for expanding and collapsing treeviews are:
Numeric Keypad *: Expands everything under the current selection
Numeric Keypad +: Expands the current selection
Numeric Keypad -: Collapses the current selection.
RIGHT ARROW: Expands the current selection if it is not expanded, otherwise goes to the first child
LEFT ARROW: Collapses the current selection if it is expanded, otherwise goes to the parent
All keyboard shortcuts work in the Microsoft Visual Studio 2008 explorer except for the collapse on the solution.

If you want all files in a solution to be collapsed use the tool: PowerCommands for Microsoft Visual Studio 2008: http://code.msdn.microsoft.com/PowerCommands
It adds a command: Collapse Projects:
This command collapses a project or projects in the Solution Explorer starting from the root selected node. Collapsing a project can increase the readability of the solution. This command can be executed from three different places: solution, solution folders and project nodes respectively.

Month abbreviation in C#

If you want to use dates in C# like 20-mar-2009, you have to know the month abbreviation, for en-US these are:

Console.WriteLine(string.Format("{0:MMM}", DateTime.ParseExact("20080101", "yyyyMMdd", newCultureInfo( "en-US", false))));
Console.WriteLine(string.Format("{0:MMM}", DateTime.ParseExact("20080201", "yyyyMMdd", newCultureInfo("en-US", false))));
Console.WriteLine(string.Format("{0:MMM}", DateTime.ParseExact("20080301", "yyyyMMdd", newCultureInfo("en-US", false))));
Console.WriteLine(string.Format("{0:MMM}", DateTime.ParseExact("20080401", "yyyyMMdd", newCultureInfo("en-US", false))));
Console.WriteLine(string.Format("{0:MMM}", DateTime.ParseExact("20080501", "yyyyMMdd", newCultureInfo("en-US", false))));
Console.WriteLine(string.Format("{0:MMM}", DateTime.ParseExact("20080601", "yyyyMMdd", newCultureInfo("en-US", false))));
Console.WriteLine(string.Format("{0:MMM}", DateTime.ParseExact("20080701", "yyyyMMdd", newCultureInfo("en-US", false))));
Console.WriteLine(string.Format("{0:MMM}", DateTime.ParseExact("20080801", "yyyyMMdd", newCultureInfo("en-US", false))));
Console.WriteLine(string.Format("{0:MMM}", DateTime.ParseExact("20080901", "yyyyMMdd", newCultureInfo("en-US", false))));
Console.WriteLine(string.Format("{0:MMM}", DateTime.ParseExact("20081001", "yyyyMMdd", newCultureInfo("en-US", false))));
Console.WriteLine(string.Format("{0:MMM}", DateTime.ParseExact("20081101", "yyyyMMdd", newCultureInfo("en-US", false))));
Console.WriteLine(string.Format("{0:MMM}", DateTime.ParseExact("20081201", "yyyyMMdd", newCultureInfo("en-US", false))));




Convert byte [] array to hex string

/// <summary>
/// Convert a byte array to a hex string
/// </summary>
/// <param name="bytes"></param>
/// <returns>
///     Converted byte array to string
///     null, when bytes == null
/// </returns>
public string ConvertByteArrayToString(byte[] bytes)
string result = null;
// Convert byte array to string, when bytes is not null
if (bytes != null)
result = BitConverter.ToString(bytes);
result = result.Replace("-", string.Empty);
return result;

Insert image with TSQL and a hex string

You can insert an image from t-sql script, if you use the hex string notation:
The next line will insert an image representing a "check mark" into the database. In a table [Test] with a column [Image].




Some times, Microsoft SQL Server Management Studio will add a "zero" at the beginning, like 0x08950….
In this case add a "zero" at the end of the hex value, like:
insert [Test] values (0x8950……0)

Then magically the data will be correctly inserted into the database, see also: http://stackoverflow.com/questions/2657922/insert-hex-string-value-to-sql-server-image-field-is-appending-extra-0

C# convert a BitMap to Byte[]

/// <summary>
/// Covert a bitmap to a byte array
/// </summary>
/// <param name="bitmap"></param>
/// <returns>
/// byte array, when bitmap could be converted
/// null, when bitmap is null
/// null, when bitmap could not be converted to byte array
/// </returns>
public byte[] ConvertBitMapToByteArray(Bitmap bitmap)
byte[] result = null;
if (bitmap != null)
MemoryStream stream = new MemoryStream();
bitmap.Save(stream, bitmap.RawFormat);
result = stream.ToArray();
return result;