SmallToolsIUse.Linq.Extensions

A set of Linq extension methods which can be used to solve common scenarios in .NET Applications. The package is available on Nuget: https://www.nuget.org/packages/SmallToolsIUse.Linq.Extensions/

Read More..

Entity Framework: Check SQL Queries and Commands

Retrieve SQL Query generated from Linq to Entities

You can see the generated query for any query which was not yet executed (it is still an IQueryable), by calling the "ToString()" method:


using(var dbContext = new NetContext())
{
    var videoDetails = dbContext.VideoDetails.Where(v => !v.Document.IsDeleted && !v.Document.MarkedForDeletion).Select(v => new VideoDto
    {
        Id = v.DocumentId,
        FileSize = v.Document.FileSize,
        FullPath = v.Document.RelativePath,
        Title = v.Title,
        Description = v.Description,
        MimeType = v.Document.MimeType,
        Duration = v.Duration,
        Date = v.Document.LastWriteTime
    });

    string videoQuery = videoDetails.ToString();
}
Read More..

WCF Web Extensions

WCF Web Extensions 1.1

Nuget package which enhances WCF REST with functionalities like optional query parameters, http headers or multipart requests.

Roadmap:

  • Version 1.0: Allow client to send optional query string parameters (available)
  • Version 1.1: Allow client-server to use optional query string parameters in method parameters, instead of using WebOperationContext class, so that the parameters are at method level, not channel level (available)
  • Version 1.2: Allow client to send custom HTTP headers
  • Version 1.3: Allow multipart/form-data requests in both client and server in a typed manner

WCF Rest Client with optional query string parameters

1. Install the following nuget package: VanaCosmin.WCF.WebExtensions

Read More..

WCF Web Extensions 1.0

WCF Web Extensions 1.0

Nuget package which enhances WCF REST with functionalities like optional query parameters, http headers or multipart requests.

 

Roadmap:

  • Version 1.0: Allow client to send optional query string parameters (available)
  • Version 1.1: Allow client-server to use optional query string parameters in method parameters, instead of using WebOperationContext class, so that the parameters are at method level, not channel level
  • Version 1.2: Allow client to send custom HTTP headers
  • Version 1.3: Allow multipart/form-data requests in both client and server in a typed manner

WCF Rest Client with optional query string parameters

1. Install the following nuget package: VanaCosmin.WCF.WebExtensions

Read More..

Customize WCF Envelope and Namespace Prefix

Introduction

WCF allows you to customize the response using DataContract, MessageContract or XmlSerializer. With DataContract you have access only to the body of the message while MessageContract will let you control the headers of the message too. However, you don't have any control over namespace prefixes or on the soap envelope tag from the response message.

When generating the response, WCF uses some default namespaces prefixes and we cannot control this from configuration. For example, <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">. Normally, the prefix should not be a problem according to SOAP standards. However, there are times when we need to support old clients who manually parse the response and they expect fixed format or look for specific prefixes.

Real world example

Recently, I was asked to rewrite an old service using .NET and WCF, keeping compatibility with existing clients. The response from WCF looked like this:

<s:envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:body>
<getcardinforesponse xmlns="https://vanacosmin.ro/WebService/soap/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<control_area>
<source>OVF</source>
<ns1:source_send_date>2014-01-06T14:15:37.1505943+01:00</ns1:source_send_date>
<api_key />
<message_id>27970411614463393270</message_id>
<correlation_id>1</correlation_id>
</control_area>
<chip_uid>1111</chip_uid>
<tls_engraved_id>************1111</tls_engraved_id>
<reference_id />
<is_blocked>false</is_blocked>
<is_useable>false</is_useable>
<registration_date>2013-12-13T13:06:39.75</registration_date>
<last_modification>2013-12-20T15:48:52.307</last_modification>
</getcardinforesponse>
</s:body>
</s:envelope>

The expected response for existing clients was:

<soap-env:envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://vanacosmin.ro/WebService/soap/">
<soap-env:body>
<ns1:getcardinforesponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ns1:control_area>
<ns1:source>OVF</ns1:source>
<ns1:source_send_date>2014-01-06T14:15:37.1505943+01:00</ns1:source_send_date>
<ns1:api_key />
<ns1:message_id>27970411614463393270</ns1:message_id>
<ns1:correlation_id>1</ns1:correlation_id>
</ns1:control_area>
<ns1:chip_uid>1111</ns1:chip_uid>
<ns1:tls_engraved_id>************1111</ns1:tls_engraved_id>
<ns1:reference_id />
<ns1:is_blocked>false</ns1:is_blocked>
<ns1:is_useable>false</ns1:is_useable>
<ns1:registration_date>2013-12-13T13:06:39.75</ns1:registration_date>
<ns1:last_modification>2013-12-20T15:48:52.307</ns1:last_modification>
</ns1:getcardinforesponse>
</soap-env:body>
</soap-env:envelope>
Read More..

How to configure a Web Application to use SSL on IIS

Create a self-signed certificate

In order to use SSL you need to buy a certificate. If you want to use SSL on a developer machine you can create and use a self-signed certificate. To create a self-signed certificate, use the following steps:

  • Open IIS Manager

  • Go to the root directory and double click on Server Certificates

  • In Actions pane (right), click then "Create Self Signed Certificate"

  • Give a friendly name to the certificate and click "OK"

IIS Manager Server Certificates

Read More..

ASP .NET Ajax File Upload

Introduction

This tutorial will show you how upload files with progressbar, without using Flash, HTML5 or similar technologies that the user's browser might not have. If you are looking for a quick way to do this, I must tell you that having a progress bar when uploading a file is not a trivial task, even if is a common requirement. Most solutions rely on flash to be installed on your computer, and if you already have the code with normal file upload, prepare to modify your code a little, because it won't be just a tag and a function call.

This is not a "how to" tutorial. This will present the technical part of the project that I am developing. You can download the source code from codeplex.

Web Server Requirements

  • ASP .NET Server with .NET Framework 4.0 (or 4.5)

  • ASP MVC 3.0 (or 4.0). The code can be adapted for Web Forms too.

Client Requirements

  • Javascript enaled on browser

Read More..