Ask your technical questions on forums or here :
ASP.NET or MVC | C# | Windows Phone
Microsoft Technology Journals by Abhimanyu K Vatsa
HOME ABOUT RAZOR BOOK SPEAKING MVC ASP.NET JQUERY VIDEOS EBOOK ARCHIVE
Showing posts with label ASP.NET. Show all posts
Showing posts with label ASP.NET. Show all posts

17 Jun 2016

Caching in MVC with Donut Caching - excluding caching login

The main purpose of using caching is to dramatically improve the performance of your application. This is nothing but output caching that means whatever you see is cached, and exact similar things is display to everyone.

I recommend you to read Output Caching in MVC post before you read here, because you should be very careful when using any caching mechanism. Or, if you already know output caching, keep reading here only.

Biggest problem you face

If you display user login status on page which you want to cache, then you need to be careful. With output cache attribute [OutputCache(....)] caches everything on page and it will not exclude caching of some portion like login status.

In the situation, the best caching library you should use is Donut Caching (aka Donut Output Caching). Let’s understand its uses.

Using Donut Caching

The best way to add donut caching to your MVC project is to use the NuGet package. From within Visual Studio, select Tools | Library Package Manager and then choose either Package Manager Console or Manage NuGet Packages. Via the console, just type install-package MvcDonutCaching and hit return. From the GUI, just search for MvcDonutCaching and click the install button.

Excluding from being cached

The package adds several overloads to the built-in Html.Action HTML helper. The extra parameter in each overload is named excludeFromParentCache. Set this to true for any action that should not be cached, or should have a different cache duration from the rest of the page.

@Html.Action("Login", "Account", true)

Here Login is a method inside Account controller, you should define this method like:

public class AccountController : Controller
{
    [ChildActionOnly]
    public ActionResult Login()
    {
        return PartialView("_LoginPartial");
    }
}

Cache rest of the page

The package also include a DonutOutputCacheAttribute to be used in place of the built-in OutputCacheAttribute. This attribute is typically placed on every controller action that needs be be cached.

You can either specify a fixed duration:

[DonutOutputCache(Duration = "300")]
public ActionResult Index()
{
    return View();
}

Or, use a cache profile:

[DonutOutputCache(CacheProfile = "TenMins")]
public ActionResult Index()
{
    return View();
}

If you are using cache profiles, be sure to configure the profiles in the web.config. Add the following within the system.web element:

<caching>
  <outputCacheSettings>
    <outputCacheProfiles>
      <add name="TenMins" duration="400" varyByParam="*" />
    </outputCacheProfiles>
  </outputCacheSettings>
</caching>

You can also configure the output cache to use a custom provider:

<caching>
  <outputCache defaultProvider="DistributedCacheProvider">
    <providers>
      <add name="DistributedCacheProvider" type="DevTrends.Example.DistributedCacheProvider" />
    </providers>
  </outputCache>
</caching>

Note, that a custom provider is not detailed here but you can write one fairly easily by subclassing System.Web.Caching.OutputCacheProvider. A number of implementations are also available on the web.

Hope this helps.

2 Dec 2015

Sorting in WebAPI - a generic way to apply sorting

In this post you will learn how to implement sorting functionality in WebAPI so that client can ask for sorted data by sending columns names through query string. Client can send more than one short parameters and request for ascending or descending data in response. Sorting functionality should be generic enough so that we can reuse it.

1 Dec 2015

Field level data selection in WebAPI

In this post you will learn how to implement field level data selection functionality in WebAPI so that client can ask for less data by sending individual columns names through query strings variable fields.

29 Nov 2015

Upload video on YouTube in ASP.NET or MVC

In this post you will learn how to upload video on YouTube from your application. I’ve used ASP.NET Web Forms as well as MVC bits to implement all functionality easily. You can achieve similar functionality ASP.NET Web Forms or MVC alone.

26 Nov 2015

Write on Existing Image

In this blog post you will learn all about writing text or image on existing image. I will be developing this in ASP.NET Web Forms, but you can achieve this functionality in MVC or windows forms as well. I’ve posted another blog post which generates QR Code. Actually all this was part of my recent requirement which I would like share with you.

25 Nov 2015

QR Code Generation and Verification

In this blog post you will learn all about QR Code, starting from requirement to generation to verification. I am going to develop this in C# and in ASP.NET Web Forms, but you can use it with MVC, Desktop Apps etc. I will be using MessagingToolkit.QRCode open source library for everything here.

20 Nov 2015

Search in selected file types Visual Studio

This is a very important feature which is worth useful when making necessary changes that may match in multiples file types but you are only supposed to change in selective files types.

14 Sep 2015

Roslyn csc.exe and vbc.exe deployment on shared hosting

Roslyn compilation is now default with .NET 4.5 means if you create any web application either Web Forms or MVC using .NET 4.5 you get this compilations bits pre-installed in your project.

Why use Roslyn compilation?

In nutshell, this enables many features which is very useful when developing application as well as when application is deployed on server.

18 Jul 2015

Stop Debugging stops IIS Express hence application stop running in browser in Visual Studio 2015

Note: This was a bug with Visual Studio 2015 Update 2 which is officially mentioned and fixed in Update 3. Read more here.

This is not a bug but as a web developer I personally expect when debugging stops browser should keep running through IIS Express instance. Next time, I make change in Visual Studio code then do a build and refresh browser, I’m addicted this way.

16 Jul 2015

The 'System.Web.Security.SqlMembershipProvider' requires a database schema compatible with schema version '1'

Error: The 'System.Web.Security.SqlMembershipProvider' requires a database schema compatible with schema version '1'

I received above error on my production machine after deploying new database for a web application. I have SQL Server 2008 R2 installed and to deploy database I created query file (.sql) schema with data. After that I deployed web application properly.

31 May 2015

MVC client side validation not working with modal or Bootstrap model

Recently in my one of the MVC Project, dynamically loaded content on Bootstrap modal client side validation was not working. By any chance if you face same issue this post is important for you.

An error occurred when trying to create a controller of type 'AlbumsController'. Make sure that the controller has a parameterless public constructor.

By any chance if you see below error, please use below resolving instruction to overcome.

An error occurred when trying to create a controller of type 'AlbumsController'. Make sure that the controller has a parameterless public constructor.

17 May 2015

LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method, and this method cannot be translated into a store expression

LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method, and this method cannot be translated into a store expression

First of all look at the screenshot of the error page

10 May 2015

Export table data into excel file

Exporting table data (DOM data) on the HTML page to excel file is a very common requirement. The simplest approach or say the completely client side approach to achieve this is to export the DOM data using client side scripts.

6 May 2015

'CompareAttribute' is an ambiguous reference between 'System.ComponentModel.DataAnnotations.CompareAttribute' and 'System.Web.Mvc.CompareAttribute'

'CompareAttribute' is an ambiguous reference between 'System.ComponentModel.DataAnnotations.CompareAttribute' and 'System.Web.Mvc.CompareAttribute'

3 May 2015

Remove Header & Footer from Print Preview in Google Chrome

Recently I had a requirement when one printing the web page should not display header and footer, basically they are automatically inserted by the browsers. Here is what this looks like:

19 Apr 2015

Blog Post not visible in BlogEngine

These days I’m using .NET Open Sources software at my best level. You won’t believe I’ve used BlogEngine implementations for 3 clients this month. Not exact the BlogEngine but its implementations in some other implementation.

17 Apr 2015

Blank/White Home Page in BlogEngine.NET

I download latest BlogEngine.NET source code and opened it in Visual Studio built it successfully and then it was running as expected.

8 Apr 2015

How to run Node.js on IIS

In this post you will learn how to run Node.js applications on IIS Server. As you know, Node.js is an open source, cross-platform runtime environment for server-side and networking applications. This is mostly written in JavaScript, and can be run within the Node.js runtime itself installed on Windows, Linux etc. Node.js was originally invented in 2009 by Ryan Dahl, and other developers working at Joyent.

6 Apr 2015

Open .NET Discussion in Jubli Park Jamshedpur on 05/04/2015 Executed

So this was another good time discussing about .NET with developers down the tree in Jubli Park, Jamshedpur.