All About ASP.NET and ASP.NET Core 2 Hosting BLOG

Tutorial and Articles about ASP.NET and the latest ASP.NET Core

Cheap Node.JS Hosting :: How to Solve Error Handling Callback in Node.JS

clock July 17, 2014 12:09 by author Ben

Error handling can be a drag, but it’s essential for the stability of your app. Naturally, I’m interested in ways to streamline the error handling process to make it as stable as it can be for the app whilst also being convenient for me to write. The async callback standard in Node.js suggests that the first parameter of the callback is an error object. If that's null, you can move along. If it's not, or you have an error thrown elsewhere, you have to figure out what to do. Let's take a look at our options!

Callback can carry on assuming the operation succeeded. Otherwise, it can deal with the error in an appropriate way, such as logging it along with any contextual information. It can then decide whether or not to carry on depending on the severity of the error or whether or not the resultant data is required to continue operation.

Let’s implement some error handling for our query error:

var log = console.log;
// We misspell 'SELECT' in this query so it fails
var query = 'SLECT 1 + 1';
con.query(query, function(err){
  if (err) return log("Query failed. Error: %s. Query: %s", err, query);
});

Our favourite library for asynchronous flow control is async. Both async.parallel and async.series accept a collection of operations, and if any of them pass an error to its callback, async will immediately invoke your completion callback with the error:

var async = require('async');
var log = console.log;
var op1 = function(cb) {
  // We misspell 'SELECT' in this query so it fails
  var query = 'SLECT 1 + 1';
  con.query(query, cb);
}

var op2 = function(cb) {
  // This query is fine
  con.query('SELECT 1 + 1', cb);
}

var ops = [op1, op2];

async.parallel(ops, function(err, results) {
  if (err) return log("Something went wrong in one of our ops. Err: %s", err);

  // Otherwise, process results
});


async.parallel will execute both op1 and op2 in parallel but if either or both fail it will invoke our completion callback with the error that occurred first.

Standard callbacks are all well and good when we’re following Node’s convention, but it’s a little bit laborious to check the result of every operation, and this can quickly get messy when there are many nested callbacks each with their own error handling code.


Best, Fast, and Reliable Node.js Web Hosting with ASPHostPortal.com

Business Ready Technology Solutions
We understand that IT isn’t a one-size-fits-all scenario. That’s why all of our enterprise hardware, software and cloud-based technology solutions can be customized to fit the needs of your business, while being flexible enough to grow as you grow.

Reliability - 99.9% uptime
That is the promise we make to you. Our proprietary software and expert system administrators monitor our servers 24 hours a day, 7 days a week.

Highly Secured
We are independent, and have our own infrastructure. Every application runs on HTTPS protocol by default.



ASP.NET MVC 5 Hosting - ASPHostPortal :: How to Perform Code First Migration in MVC 5

clock July 16, 2014 08:39 by author Jervis

In today post, I will explain Code Migration in MVC application. This migration helps you to update and change the data model that you’ve created for application and you don't need to re-create or drop your database.

 

How to Apply Code First Migration

The data model in the database usually changes after developing the new application. When the data model changes, it becomes out of sync with the database. We've configured our Entity Framework in the app to drop and recreate the data model automatically. When any type of change is done in the entity classes or in the DbContext class, the existing database is deleted and the new database is created that matches the model and sees it with test data.

When the application runs in production, we do not want to lose everything each time we make changes like adding a column. The Code First Migration solved this problem by enabling the code first to update the database instead of dropping or recreating.

The procedure is following:

1. Disable the Database Initializer in the Web.Config file.

The following is the example:

<!--<contexts>

      <context type="Vag_Infotech.DAL.CollegeDbContext, Vag_Infotech">
        <databaseInitializer type="Vag_Infotech.DAL.CollegeDatabaseInitializer, Vag_Infotech"></databaseInitializer>
      </context>
</contexts>--> 

And also you need to change your Global.asax file:

// Database.SetInitializer(new CollegeDatabaseInitializer()); 

2. Change your database name in your web.config file:

<connectionStrings> 
  <add name="CollegeDbContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=VInfotechNew;Integrated Security=SSPI" providerName="System.Data.SqlClient" />
</
connectionStrings> 

3. Open the Package Manager Console and enter this command:

enable-migration

add-migration InitialCreate 

Then, you will see the solution explorer below:

How to Edit Seed Method

Now, we add new code for updating our data model in this method. When we do not use the migration, the data model is dropped or re-created during the execution of the application each time, but now the data is retained after database changes.

Here are the steps to edit seed method:

1. Modify your configuration.cs file with this code:

namespace Vag_Infotech.Migrations
{
    using System;
    using System.Collections.Generic;
    using System.Data.Entity;
    using System.Data.Entity.Migrations;
    using System.Linq;
    using Vag_Infotech.Models;
 
    internal sealed class Configuration : DbMigrationsConfiguration<Vag_Infotech.DAL.CollegeDbContext>
    {
        public Configuration()
        {
            AutomaticMigrationsEnabled = false;
        }
 
        protected override void Seed(Vag_Infotech.DAL.CollegeDbContext context)
        {
            var New_Students = new List<Student>
            {
                new Student{FirstName="Louis",LastName="Fordsen",
                    EnrollmentDate=DateTime.Parse("2009-07-01")},
                new Student{FirstName="David ",LastName="Roger",
                    EnrollmentDate=DateTime.Parse("2009-07-01")},
                new Student{FirstName="Mike",LastName="Upson",
                    EnrollmentDate=DateTime.Parse("2009-07-05")},
            };
            New_Students.ForEach(ns => context.Students.AddOrUpdate(p => p.LastName, ns));
            context.SaveChanges();
 
            var New_Courses = new List<Course>
            {
                new Course{CourseID=201,Name="MCA",Credit=3,},
                new Course{CourseID=202,Name="M.Sc.IT",Credit=2,},
                new Course{CourseID=203,Name="M.Tech.CS",Credit=2,},
                new Course{CourseID=204,Name="M.Tech.IT",Credit=4,}
            };
            New_Courses.ForEach(ns => context.Courses.AddOrUpdate(p => p.Name, ns));
            context.SaveChanges();
 
            var New_Enrollments = new List<Enrollment>
            {
                new Enrollment{
                    StudentID= New_Students.Single(ns=>ns.FirstName=="Louis").ID,
                    CourseID=New_Courses.Single(nc=>nc.Name=="MCA").CourseID,
                    Grade=StudentGrade.A
                },
                new Enrollment{
                    StudentID= New_Students.Single(ns=>ns.FirstName=="David").ID,
                    CourseID=New_Courses.Single(nc=>nc.Name=="M.Tech.IT").CourseID,
                    Grade=StudentGrade.B
                },
                new Enrollment{
                    StudentID= New_Students.Single(ns=>ns.FirstName=="Mike").ID,
                    CourseID=New_Courses.Single(nc=>nc.Name=="M.Tech.CS").CourseID,
                    Grade=StudentGrade.D
                },
            };
 
            foreach (Enrollment et in New_Enrollments)
            {
                var NewEnrollDb = context.Enrollments.Where(
                    ns => ns.Student.ID == et.StudentID &&
                        ns.Course.CourseID == et.CourseID).SingleOrDefault();
                if (NewEnrollDb == null)
                {
                    context.Enrollments.Add(et);
                }
            }
            context.SaveChanges();
        }
    }
}

In the code above the Seed() takes the context object as an input argument and in the code the object is used to add the entities to the database. We can see how the code creates the collection for the database for each entity type and then saves it by SaveChanges() and adds it through the DbSet property. It is not necessary to call the SaveChanges() after each group of entities.

2. Build the solution

How to Execute the Migration

Here are steps:

1. Enter this command on Package Manager Console:

Update-database

2. Run the application and you’ll see the change



Cheap WebSocket Hosting Tutorial :: How to Enable or Disable WebSocket Protocol on Windows Server 2012 and Windows 8

clock July 15, 2014 08:32 by author Ben

Websocket implements the server side of the WebSocket protocol. The WebSocket protocol is a protocol introduced in HTML5, intended to replace Comet and other long-polling solutions, to provide a rich communication mechanism over HTTP. The WebSocket protocol was standardized by IETF as RFC 6455. We could find introductions and more information on Wikipedia and W3C.

Microsoft .NET 4.5 provides several ways in using WebSocket. On the server side, we can host our WebSocket server through any one of the ways below:

  • Using HttpContext.AcceptWebSocketRequest
  • Creating a WCF service with CallbackContract and the new netHttpBinding
  • Using WebSocketHandler or WebSocketHost provided in Microsoft.WebSockets.dll


Here is the step by step how to enable WebSocket Protocol on Windows
Server 2012 and Windows 8 on server side:

NOTE: The web server must be IIS 8 and above.


Enable WebSocket Protocol in Windows Server 2012


On Windows Server 2012, you could do that through Server Manager -> Manage -> Add Roles and Features. -> Expand the Web Server (IIS) role and check Web Server -> Application Development -> WebSocket Protocol.


Enable WebSocket Protocol in Windows 8


Open "Control Panel" -> Open "Turn Windows features on or off" -> Expand “Internet Information Services” -> Expand “World Wide Web Services” -> Expand “Application Development Features" -> Checklist WebSocket Protocol and click “OK”


Disable WebSocket when using socket.io on node.js


If you are using the WebSocket support in socket.io on node.js in your site, you will need to disable the default IIS WebSockets module by adding the below snippet to your web.config or applicationHost.config. If this is not done, the IIS WebSockets module will attempt to handle the WebSocket communication rather than letting this task fall through to node.js (and hence your application). This will result in unexpected errors when you attempt to access your site.

<system.webServer>
    ...
    <webSocket enabled=”false”/>
</system.webServer>


Reasons to Trust Your ASP.NET 4.5 Websockets Hosting to ASPHostPortal.com

Uptime & Support Guarantees
We are so confident in our hosting services we will not only provide you with a 30 days money back guarantee, but also we give you a 99.9% uptime guarantee.
   
A Powerful User-Friendly Control Panel
Our Control Panel provides the tools and utilities, which give you true control over your account and web pages.

Setup Installation
We'll get you up and running within 30 seconds of placing your order.



Cheap ASP.NET Hosting Tips :: How to Integrate Paypal in ASP.NET Site

clock July 11, 2014 09:17 by author Ben

This article discusses integration of PayPal Payment in ASP.NET web application. Nowadays PayPal is the most popular payment gateway worldwide because it is totally free to integrate and PayPal does not charge anything for opening an account, you will pay PayPal when you get paid. And the amount is also lower than other payment gateways.

PayPal supports several types of payments:

  • Payments for goods in the PayPal cart. PayPal is responsible for all operations supporting the cart in this case. Unfortunately, this option does not provide the maximum flexibility that is required to implement some projects, so the article does not consider this option.
  • Recurring billing or subscription. PayPal provides a subscription capability; that means that a definite sum will be periodically transferred from the user's account to the seller's account. The user can unsubscribe anytime. The seller can specify the subscription's period and cost. He also can organize a trial period to let the user assess the quality of services he provides. The trial period can be either paid or free.
  • "One click" shopping. Goods are not put into the cart in this case. This method also is used to pay for goods in a cart that was filled without PayPal. That's why this option provides maximum flexibility and full control of the cart.


Let’s start step by step work to integrate PayPal payment :

1.  Create PayPal account on PayPal Sandbox: Basically, PayPal provides an environment to developer that how they can integrate PayPal payment in their website. So just open URL: https://developer.paypal.com/ and click on SignUp option.

2. Create buyer (Personal Account) and one seller account (Business Account) PayPal account.

3. Having a valid PayPal API Token Key

4. Having PayPal business account email id

5. Create New Page on ASP.NET project and copy this script :

On ASPX PAGE:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"

    CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">

</asp:Content>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">

    <div>

        <table width="700" align="center" cellpadding="0" cellspacing="0">

            <tr>

                <td height="60">

                    <b>Paypal Integration in ASP.NET</b>

                </td>

            </tr>

            <tr>

                <td height="40" align="center">

                    <asp:GridView ID="gvPayPal" runat="server" AutoGenerateColumns="False" OnRowCommand="gvPayPal_RowCommand"

                        BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px"

                        CellPadding="3" CellSpacing="2">

                        <RowStyle ForeColor="#8C4510" BackColor="#FFF7E7" />

                        <Columns>

                            <asp:TemplateField HeaderText="Product Name">

                                <ItemTemplate>

                                    <asp:Label ID="lblName" runat="server" Text='<%#Eval("prodName") %>'></asp:Label>

                                </ItemTemplate>

                            </asp:TemplateField>

                            <asp:TemplateField HeaderText="Product Description">

                                <ItemTemplate>

                                    <asp:Label ID="lblDescription" runat="server" Text='<%#Eval("prodDesc") %>'></asp:Label>

                                </ItemTemplate>

                            </asp:TemplateField>

                            <asp:TemplateField HeaderText="Product price">

                                <ItemTemplate>

                                    <asp:Label ID="lblProductPrice" runat="server" Text='<%#Eval("prodPrice") %>'></asp:Label>

                                </ItemTemplate>

                            </asp:TemplateField>

                            <asp:TemplateField HeaderText="Buy Now">

                                <ItemTemplate>

                                    <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/images/buy.png"

                                       Width="64" Height="64" CommandName="buy" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" />

                                </ItemTemplate>

                            </asp:TemplateField>

                        </Columns>

                        <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />

                        <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />

                        <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />

                        <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />

                        <SortedAscendingCellStyle BackColor="#FFF1D4" />

                        <SortedAscendingHeaderStyle BackColor="#B95C30" />

                        <SortedDescendingCellStyle BackColor="#F1E5CE" />

                        <SortedDescendingHeaderStyle BackColor="#93451F" />

                    </asp:GridView>

                </td>

            </tr>

        </table>

        <!-- PayPal Logo -->

        <table border="0" cellpadding="10" cellspacing="0" align="center">

            <tr>

                <td align="center">

                </td>

            </tr>

            <tr>

                <td align="center">

                    <a style="cursor:pointer;" title="Paypal payment gateway center" onclick="javascript:window.open('https://www.paypal.com/cgi-bin/webscr?cmd=xpt/Marketing/popup/OLCWhatIsPayPal-outside','olcwhatispaypal','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=400, height=350');">

                        <img src="https://www.paypal.com/en_US/i/bnr/horizontal_solution_PPeCheck.gif" border="0"

                            alt="Solution Graphics"></a>

                </td>

            </tr>

        </table>

        <!-- PayPal Logo -->

    </div>

</asp:Content>

On CS PAGE :

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Configuration;

using System.Data.SqlClient;

using System.Data;

 

public partial class _Default : System.Web.UI.Page

{

    SqlConnection Con = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices"].ToString());

    SqlCommand cmd = new SqlCommand();

    SqlDataAdapter da = new SqlDataAdapter();

    DataTable dt = new DataTable();

    DataRow dr;

 

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!Page.IsPostBack)

        {

            //Add some column to datatable display some products information           

            dt.Columns.Add("prodName");

            dt.Columns.Add("prodDesc");

            dt.Columns.Add("prodPrice");

 

            //Add rows with datatable and bind in the grid view

            dr = dt.NewRow();

            dr["prodName"] = "MindStick Cleaner";

            dr["prodDesc"] = "Cleans all system dummy data";

            dr["prodPrice"] = "$100.00";

            dt.Rows.Add(dr);

 

            dr = dt.NewRow();

            dr["prodName"] = "MindStick DataConverter";

            dr["prodDesc"] = "Helps to import export data in different format";

            dr["prodPrice"] = "$120.00";

            dt.Rows.Add(dr);

 

            dr = dt.NewRow();

            dr["prodName"] = "MindStick SurveyManager";

            dr["prodDesc"] = "Helps creating survey page with specified format dll";

            dr["prodPrice"] = "$140.00";

            dt.Rows.Add(dr);

 

            dr = dt.NewRow();

            dr["prodName"] = "MindStick TeraByte Importer";

            dr["prodDesc"] = "Data transfer utility";

            dr["prodPrice"] = "$30.00";

            dt.Rows.Add(dr);

 

            gvPayPal.DataSource = dt;

            gvPayPal.DataBind();

        }

    }

 

    protected void gvPayPal_RowCommand(object sender, GridViewCommandEventArgs e)

    {

        if (e.CommandName == "buy")

        {

            ImageButton ib = (ImageButton)e.CommandSource;

            int index = Convert.ToInt32(ib.CommandArgument);

            GridViewRow row = gvPayPal.Rows[index];

 

            //Get each Column label value from grid view and store it in label

            Label pName = (Label)row.FindControl("lblName");

            Label pDescription = (Label)row.FindControl("lblDescription");

            Label pPrice = (Label)row.FindControl("lblProductPrice");

 

            //Here store that person name who are going to make transaction

            Session["user"] = "Arun Singh";

 

            // make query string to store logged in user information in sql server table         

            string query = "";

            query = "insert into purchase(pname,pdesc,price,uname) values('" + pName.Text + "','" + pDescription.Text + "','" + pPrice.Text.Replace("$", "") + "','" + Session["user"].ToString() + "')";

            Con.Open();

            cmd = new SqlCommand(query, Con);

            cmd.ExecuteNonQuery();

            Con.Close();

 

            //Pay pal process Refer for what are the variable are need to send http://www.paypalobjects.com/IntegrationCenter/ic_std-variable-ref-buy-now.html

 

            string redirectUrl = "";

 

            //Mention URL to redirect content to paypal site

            redirectUrl += "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_xclick&business=" + ConfigurationManager.AppSettings["paypalemail"].ToString();

 

            //First name I assign static based on login details assign this value

            redirectUrl += "&first_name=Arun_Seller";

           

            //Product Name

            redirectUrl += "&item_name=" + pName.Text;

 

            //Product Amount

            redirectUrl += "&amount=" + pPrice.Text;

 

            //Business contact paypal EmailID

            redirectUrl += "&[email protected]";

 

            //Shipping charges if any, or available or using shopping cart system

            redirectUrl += "&shipping=5";

 

            //Handling charges if any, or available or using shopping cart system

            redirectUrl += "&handling=5";

 

            //Tax charges if any, or available or using shopping cart system

            redirectUrl += "&tax=5";

 

            //Quantiy of product, Here statically added quantity 1

            redirectUrl += "&quantity=1";

 

            //If transactioin has been successfully performed, redirect SuccessURL page- this page will be designed by developer

            redirectUrl += "&return=" + ConfigurationManager.AppSettings["SuccessURL"].ToString();

 

            //If transactioin has been failed, redirect FailedURL page- this page will be designed by developer

            redirectUrl += "&cancel_return=" + ConfigurationManager.AppSettings["FailedURL"].ToString();

 

            Response.Redirect(redirectUrl);

        }

    }

}

 

On DESIGN PAGE :

USE [MyDatabase]

GO

 

/****** Object:  Table [dbo].[purchase]    Script Date: 01/27/2013 09:26:07 ******/

SET ANSI_NULLS ON

GO

 

SET QUOTED_IDENTIFIER ON

GO

 

SET ANSI_PADDING ON

GO

 

CREATE TABLE [dbo].[purchase](

      [Id] [int] IDENTITY(1,1) NOT NULL,

      [PName] [nvarchar](100) NULL,

      [PDesc] [nvarchar](100) NULL,

      [Price] [money] NULL,

      [Uname] [varchar](50) NULL,

 CONSTRAINT [PK_purchase] PRIMARY KEY CLUSTERED

(

      [Id] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY]

 

GO

 

SET ANSI_PADDING OFF

GO

On web.config file:

<?xml version="1.0"?>

<!--

  For more information on how to configure your ASP.NET application, please visit

  http://go.microsoft.com/fwlink/?LinkId=169433

  -->

<configuration>

  <connectionStrings>

    <add name="ApplicationServices" connectionString="data source=Arun-PC;Integrated Security=true; Initial Catalog= MyDatabase; User Id= Arun-PC; Password= mindstick;" providerName="System.Data.SqlClient"/>

  </connectionStrings>

  <system.web>

    <compilation debug="true" targetFramework="4.0"/>

    <authentication mode="Forms">

      <forms loginUrl="~/Account/Login.aspx" timeout="2880"/>

    </authentication>

    <membership>

      <providers>

        <clear/>

        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/>

      </providers>

    </membership>

    <profile>

      <providers>

        <clear/>

        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>

      </providers>

    </profile>

    <roleManager enabled="false">

      <providers>

        <clear/>

        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/"/>

        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/"/>

      </providers>

    </roleManager>

  </system.web>

  <appSettings>

    <add key="token" value="(insert your paypal API Signature) "/>

    <add key="paypalemail" value="(insert with paypal login email id)"/>

    <!--Here i used sandbox site url only if you hosted in live change sandbox to live paypal URL-->

    <add key="PayPalSubmitUrl" value="https://www.sandbox.paypal.com/cgi-bin/webscr"/>

    <add key="FailedURL" value="http://localhost:49666/PayPalIntegration/Failed.aspx"/> <!--Failed Page URL-->

    <add key="SuccessURL" value="http://localhost:49666/Default.aspx"/> <!--Success Page URL-->

  </appSettings>

  <system.webServer>

    <modules runAllManagedModulesForAllRequests="true"/>

  </system.webServer>

</configuration>

6. Run the project to see the result.

 

Look no further! You have found the answer. ASPHostPortal.com is your ASP.NET 4.5 hosting home! We understand that as .NET developer, you need to find good .NET hosting that provide reliable and cheap .NET hosting. ASPHostPortal.com supports the latest .NET framework, .NET 4.5, as well as past frameworks like .NET 4, .NET 3.5, and .NET 2.0. All of our .NET hosting comes with FREE Trial Hosting. If the service does not meet your expectations, simply cancel before the end of the free trial period. No Risk!! Why wait longer?



ASP.NET 4.5.2 Hosting with ASPHostPortal.com :: SEO Tips for Your ASP.NET Site

clock June 16, 2014 06:43 by author Kenny

In this article I will give you SEO tips for your ASP.NET site. Search Engine Optimization is the process of improving the visibility of a website on organic ("natural" or un-paid) search engine result pages (SERPs), by incorporating search engine friendly elements into a website. SEO helps to ensure that a site is accessible to a search engine and improves the chances that the site will be found by the search engine.

ASP.NET (originally called ASP+) is the next generation of Microsoft's Active Server Page (ASP), a feature of their Internet Information Server (IIS). The latest version of ASP.NET is ASP.NET 4.5.2. Well, here are 10 tips on SEO for your ASP.NET website.

1. PAGE TITLE

Every page in your website should have a unique and descriptive page title that can describe what the page offers. You can set the Page Title either declaratively or in the code behind file.
This is very easy to achieve, and has a big influence on your site's ranking: don't use static titles. The <title> tag is one of the best ways to optimize a site for a special topic or keyword. Don't use a dozen keywords in the title tag, because you're "paying in" for each and every keyword - "paying in" means, that the weight of your site gets divided for all the keywords mentioned in the title tag. Choose one or two keywords, or a keyword-combination, to achieve relevance and a good ranking.

2. HYPERLINK

Make sure all your links in your page are hyperlinks. Search engines can crawl a page only if it is linked through a hyper link (anchor tag). JavaScript navigations are not search engine friendly since search engines will not understand it.

3. META KEYWORD AND META DESCRIPTION

Add Meta keyword and Meta description tag with relevant contents. Search engines will use these tags to understand what the page offers.

4.  DESCRIPTIVE URL

Make your website URL descriptive. URL’s that has lots of query string values, numeric ids are not descriptive. It will provide enough information what the page offers. For example, http://asphostportal.com/products.aspx?plan=B11E9918-BEC3-4DAA-A54B-0EC7E8742D9E is not descriptive as http://asphostportal.com/Windows-Shared-Hosting-Plans

5. ALT FOR IMAGES, TITLE FOR ANCHOR

Add ALT text for images and Title for hyperlinks. The ALT text will be displayed when the browser cannot display the image for some reasons. Search engines will not be able to read the image and ALT text will give some hint about the image which the search engine can use.

6.  DESIGN YOUR PAGE LIGHTER

Try to design your page with very less media contents like images, flash objects, Silverlight objects, ActiveX objects, etc. Search engines can only read HTML contents. A page that is entirely build on flash or Silverlight are not search engine friendly since the search engine robots cannot find any textual contents in those pages.

7. HEADER TAGS

Use Header tags (H1, H2, H3, H4, H5 and H6) wherever appropriate instead of styling the text in SPAN tags. These Header tags are search engine friendly. You can use this tag efficiently to organize your page headings and sub headings.
For example, you can put your page top most heading in H1, sub heading in H2, sub-sub heading in H3, etc that represents a proper hierarchy of your page contents.

8. LIMIT THE NUMBER OF LINKS PER PAGE

Previously there was a limit in number of links (100 links per page) the Google search engine will index on a page. This restriction is now no more. But it is still advisable to have limited number of links in your pages to avoid any adverse effect on your site rank.  This is to prevent link spamming and to preserve the page rank.

9. BUILD SITEMAP

Always have a sitemap file that can guide users and search engines to navigate your site pages easily. It is really necessary to have 2 site maps for a site, an xml sitemap file used by the search engines and an html sitemap file for the website users. You can submit your xml sitemap or RSS feed to Google Webmaster tools.

10.  MAKE SEO FRIENDLY PAGERS

Always construct search engine friendly pager links when displaying list of items in a summary page. For example, product list, article list page, etc. A link is called search engine friendly if it is anchor tag (<A>) that has a reachable url in its href property through GET request.



ASP.NET MVC 6 Hosting with ASPHostPortal.com :: ASP.NET vNext in ASP.NET MVC 6

clock June 13, 2014 09:08 by author Kenny

The vNext tag has been placed on the next version of ASP.NET MVC 6. ASP.NET vNext will be optimized for the cloud, which means applications will (or should) have only the pieces that it needs. In addition, it promises more flexible componentization and better class performance and startup times. An interesting twist is ASP.NET vNext will be an open source project as part of the .NET Foundation. In addition, the .NET compiler platform "Roslyn" is open sourced as well.

.NET vNext support true side-by-side deployment. If your app is using cloud-optimized subset of .NET vNext, you can deploy all of your dependencies including the .NET vNext (cloud optimized) by uploading bin to hosting environment. In this way you can update your app without affecting other applications on the same server. ASP.NET vNext will let you deploy your own version of the .NET Framework on an app-by-app-basis.

MVC, Web API and Web Pages have been merged into one framework, called MVC 6. This will follow common programming approach between all these three i.e. a single programming model for Web sites and services.

ASP.NET vNext includes new cloud-optimized versions of MVC, Web API, Web Pages, SignalR, and Entity Framework. The advantage of using the Cloud Optimized Framework is that you can include a copy of the Core (or Mono) CLR with your website. You no longer have to upgrade .NET on the entire machine for the sake of one website. You can even have different versions of the CLR for different websites running side by side.

.NET vNext use the Roslyn compiler to compile code dynamically. You will be able to edit a code file, refresh the browser, and see the changes without rebuilding the project.

.NET vNext is open source and cross platform. Not only is Microsoft planning for cross-platform deployment, they are also enabling cross-platform development. Batch files for the major platforms such as OS X and Linux will be provided so that you can package and deploy ASP.NET vNext projects without needing Windows and Visual Studio.

MVC 6 has no dependency on System.Web since it was quite expensive. A typical HttpContext object graph can consume 30K of memory per request and working with small JSON-style requests this is very costly. With MVC 6 it is reduced to roughly 2K. The result is a leaner framework, with faster startup time and lower memory consumption.

ASP.NET vNext apps are cloud ready by design. Services such as session state and caching will adjust their behavior depending on hosting environment either. It is cloud or a traditional hosting environment. It uses dependency injection behind the scenes to provide your app with the correct implementation for these services for cloud or a traditional hosting environment. In this way, it will easy to move your app from on-premises to the cloud, since you need not to change your code.

vNext is host agnostic. You can host your app in IIS, or self-host in a custom process. (Web API 2 and SignalR 2 already support self-hosting; ASP.NET vNext brings this same capability to MVC.)

ASP.NET vNext has new project extension project.json to list all the dependencies for the application and astartup class in place of Global.asax.

Dependency injection is built into the framework. Now, you can use your preferred IoC container to register dependencies.



ASPHostPortal.com Proudly Announces Support ASP.NET MVC 6 Hosting

clock June 13, 2014 08:27 by author Ben

Web hosting provider ASPHostPortal.com (www.asphostportal.com) announced this week that it has support of ASP.NET MVC 6.0 Hosting. The ASP.NET MVC 6.0 Framework is the latest evolution of Microsoft’s ASP.NET web platform. ASP.NET MVC 6 represents a fundamental change to how Microsoft constructs and deploys web frameworks. The goal is to create a host agnostic framework that eliminates the dependencies on the legacy System.Web infrastructure.

Included in MVC 6 is Web API and Web Pages, allowing Microsoft to remove a lot of the overlap between the three frameworks. One result of this change means that MVC will be self-hosting just like Web API 2 and SignalR 2. MVC 6 has no dependency on System.Web since it was quite expensive. A typical HttpContext object graph can consume 30K of memory per request and working with small JSON-style requests this is very costly. With MVC 6 it is reduced to roughly 2K. The result is a leaner framework, with faster startup time and lower memory consumption.

“We have always up to date for the products by Microsoft offers. With the launched of ASP.NET MVC 6 hosting services, we hope that developers and our existing clients can try this new features.” said Dean Thomas, Manager at ASPHostPortal.com.

ASPHostPortal.com believes in providing top-notch service at affordable price. We offer ASP.NET MVC 6.0 hosting with the following features such as Unlimited Domain, Unlimited Subdomain, 5 GB Disk Space, 2 SQL Database and Unlimited Email Account. As a leading hosting provider, ASPHostPortal.com offers a comprehensive range of services including domain name registrations, servers, online backup solutions and dedicated web hosting. ASPHostPortal.com is well placed to deliver a high quality service.

Where to look for the best ASP.NET MVC 6.0 hosting service? How to know more about the different types of hosting services? Read more about it on ASP.NET MVC 6 Hosting site.

About ASPHostPortal.com:

ASPHostPortal.com is a hosting company that best support in Windows and ASP.NET-based hosting. Services include shared hosting, reseller hosting, and sharepoint hosting, with specialty in ASP.NET, SQL Server, and architecting highly scalable solutions. As a leading small to mid-sized business web hosting provider, ASPHostPortal.com strive to offer the most technologically advanced hosting solutions available to all customers across the world. Security, reliability, and performance are at the core of hosting operations to ensure each site and/or application hosted is highly secured and performs at optimum level.



ASP.NET 4.5.2 Hosting in United Arab Emirates with ASPHostPortal :: How toTransfer Data from One Page to another Page in ASP.NET 4.5.2

clock June 10, 2014 11:47 by author Kenny

ASP.NET is a web programming platform developed by Microsoft. It is the successor to Active Server Pages. The term "classic ASP" is often used to distinguish previous versions of Active Server Pages with the .NET (pronounced "dot net") versions. How many ways do you know to send the data between ASP.NET Pages? In this post I’m going to list 8 different ways.

Now, let me explain how to learn multiple ways to transfer data from one ASP.NET page to another. Some of these include using the cache, http posts, querystring variables, ASP.NET session state, etc. Each button in the demo has the required code in it's Click event handler, and brings you to a separate target page that gets and displays the data that was sent. Let’s check here are the methods:

1. Use the querystring:
The QueryString collection is used to retrieve the variable values in the HTTP query string.  Using this technique I will add my data with URL and on the next page will grab it.

 protected void QueryStringButton_Click(object sender, EventArgs e)
          {
              Response.Redirect("QueryStringPage.aspx?Data=" + Server.UrlEncode(DataToSendTextBox.Text));
         }


2. Use HTTP POST:
The Hypertext Transfer Protocol (HTTP) is a communication protocol that is designed to enable request-response between clients and servers.  Using this technique I will call a post back url and the on next page using Request.From I will grab it.

 <asp:Button ID="HttpPostButton" runat="server" Text="Use HttpPost" 
              PostBackUrl="~/HttpPostPage.aspx" onclick="HttpPostButton_Click"/>
 
 protected void HttpPostButton_Click(object sender, EventArgs e)
         {
      // The PostBackUrl property of the Button takes care of where to send it!
         }


3. Use Session State:
Sessions can be used to store even complex data for the user just like cookies. Actually, sessions will use cookies to store the data, unless you explicitly tell it not to. Sessions can be used easily in ASP.NET with the Session object. Using this technique I will store the data in session variable on the client machine and on the next page will grab it. Using Application Variable instead of Session Variable is recommended by experts.

    protected void SessionStateButton_Click(object sender, EventArgs e)
          {
              Session["Data"] = DataToSendTextBox.Text;
              Response.Redirect("SessionStatePage.aspx");
         }


4.  Use public properties:
Properties are not just to provide access to the fields; rather, they are supposed to provide controlled access to the fields of our class. Using this technique I will send the using a public method and on the next page will grab it using PreviousPage.MethodName.

    public string DataToSend
         {
             get
             {
                  return DataToSendTextBox.Text;
              }
         }
 
         protected void PublicPropertiesButton_Click(object sender, EventArgs e)
          {
              Server.Transfer("PublicPropertiesPage.aspx");
         }


5. Use PreviousPage Control Info:
Using this technique I will just redirect the user on next page and on the next page will use PreviousPage.FindControl to grab the data.

 protected void ControlInfoButton_Click(object sender, EventArgs e)
          {
              Server.Transfer("ControlInfoPage.aspx");
         }
 
   // target page:
 protected void Page_Load(object sender, EventArgs e)
         {
             var textbox = PreviousPage.FindControl("DataToSendTextbox") as TextBox;
              if (textbox != null)
             {
                 DataReceivedLabel.Text = textbox.Text;
             }
         }


6. Use HttpContext Items Collection:

   protected void HttpContextButton_Click(object sender, EventArgs e)
          {
              HttpContext.Current.Items["data"] = DataToSendTextBox.Text;
              Server.Transfer("HttpContextItemsPage.aspx");
         }
 
 // target page:
 protected void Page_Load(object sender, EventArgs e)
          {
              this.DataReceivedLabel.Text =(String) HttpContext.Current.Items["data"];
         }


7. Use Cookies:
Cookies are small pieces of text that are passed between browser and web server with every request. As a consequence, their values are available to any page within the site. Cookies are commonly used to store user preferences which help the site remember which features to turn on or off, for example. They might be used to record the fact that the current user has authenticated and is allowed to access restricted areas of the site. It is the browser's job to store persistent cookies as text files on the client machine. The storage duration is determined by the type of cookie and the expiry date that it is given. Cookies with no expiry date are not stored on the client machine and are cleared at the end of the user's session.

 protected void CookiesButton_Click(object sender, EventArgs e)
         {
             HttpCookie cook =  new HttpCookie("data");
             cook.Expires = DateTime.Now.AddDays(1);
             cook.Value = DataToSendTextBox.Text;
              Response.Cookies.Add(cook);
              Response.Redirect("HttpCookiePage.aspx");
         }
 
 // target page:
 protected void Page_Load(object sender, EventArgs e)
         {
             DataReceivedLabel.Text = Request.Cookies["data"].Value;
         }


8. Use Cache:
The Cache is primarily intended to be used to improve performance of web pages, in that you can add any arbitrary object to it and retrieve it at will. Cache items are stored in memory on the server, and can be considered as special global variables. In fact, pre-ASP.NET, Application state used to be treated as a kind of cache. The difference between Application variables and Cache is that Cache offers a management API. In Web Pages, cache is managed via a WebCache helper. When you want to add something to the Cache, you use the WebCache.Set method. This method takes four parameters: the name you want to give the cache item, the item itself, the number of minutes that the item should remain in the Cache (default: 20) and whether those minutes should restart everytime the item is referenced or not (default: true). This is called Sliding Expiration.

 protected void CacheButton_Click(object sender, EventArgs e)
          {
              Cache["data"] = DataToSendTextBox.Text;
              Server.Transfer("CachePage.aspx");
         }
    // target page:
     protected void Page_Load(object sender, EventArgs e)
          {
              this.DataReceivedLabel.Text = (string) Cache["data"];
         }


ASP.NET 4.5.2 Hosting in Saudi Arabia with ASPHostPortal.com :: What’s New in ASP.NET 4.5.2? – QueueBackgroundWorkItem

clock June 9, 2014 11:56 by author Kenny

ASP.NET is built on the .NET framework, which provides an application program interface (API) for software programmers. The .NET development tools can be used to create applications for both the Windows operating system and the Web. You've probably heard the word ASP.net fairly often these days, especially on developer sites and news. This article will explain what the fuss is all about. ASP.NET is not just the next version of ASP; it is the next era of web development. ASP.NET allows you to use a full featured programming language such as C# (pronounced C-Sharp) or VB.NET to build web applications easily.

New version of ASP.NET, .Net 4.5.2 was released on May 5th. Starting with the recently released version 4.5.2 of the .NET Framework, ASP.NET now supports the HostingEnvironment.QueueBackgroundWorkItem which lets you queue background threads from within an ASP.Net web application.

Well, the new HostingEnvironment.QueueBackgroundWorkItem method that lets you schedule small background work items. ASP.NET tracks these items and prevents IIS from abruptly terminating the worker process until all background work items have completed. These will enable ASP.NET applications to reliably schedule Async work items.

Remember that the QueueBackgroundWorkItem can only be called inside an ASP.NET managed app domain. It won't work if the runtime host is either Internet Explorer or some Windows shell. This is useful for long running tasks that don’t need to complete before returning a response to the user.

 using System;
 using System.Diagnostics;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Web.Hosting;
 using System.Web.Mvc; 
 
 namespace QueueBackgroundWorkItem.Controllers
 {
     public class HomeController : Controller
     {
         // notice that the action did need to be declared async
         public ActionResult Index()
         {
             Func<CancellationToken, Task> workItem = DelayWrite;
             HostingEnvironment.QueueBackgroundWorkItem(workItem);
              // the view is returned before the work item is complete
            return View();
         } 
         // Background work items should use async/await to avoid tying up IIS threads
         // the runtime will provide the cancellation token
         private async Task DelayWrite(CancellationToken cancellationToken)
         {
             // perform a long running operation, e.g. network service call, computation, file IO
             await Task.Delay(5000);
             Trace.WriteLine("Executed from a background work item");         
         }  
     }
 }


ASPHostPortal Web Hosting Announces Release of New Free 7 Days ASP.NET MVC 5.2 Hosting

clock June 6, 2014 07:48 by author Ben

Windows and ASP.NET hosting specialist, ASPHostPortal.com, has announced the availability of new hosting plans that are optimized for the latest update of the ASP.NET MVC  technology. The ASP.NET MVC 5.2 Release Candidate is now available to developers for immediate download. ASP.NET MVC 5.2 is the latest update to Microsoft's popular MVC (Model-View-Controller) technology - an established web application framework. This package contains the runtime assemblies for ASP.NET MVC. ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that enables a clean separation of concerns and that gives you full control over markup. ASP.NET MVC 5.2  brings bootstrap into the default MVC template, authentication filters, filter overrides and attribute routing.  Attribute Routing on ASP.NET MVC 5.2 now provides an extensibility point called IDirectRouteProvider, which allows full control over how attribute routes are discovered and configured.

ASPHostPortal.com - a cheap, constant uptime, excellent customer service, quality and also reliable hosting provider in advanced Windows and ASP NET technology. ASPHostPortal.com hosts its servers in top class data centers that is located in United States to guarantee 99.9% network uptime. All data center feature redundancies in network connectivity, power, HVAC, security, and fire suppression. All hosting plans from ASPHostPortal.com include 24×7 support and 30 days money back guarantee.

“We pride ourselves on offering the most up to date Microsoft services. We're pleased to launch this product today on our hosting environment” said Dean Thomas, Manager at ASPHostPortal.com. “We have always had a great appreciation for the products that Microsoft offers. With the launched of ASP.NET MVC 5.2 hosting services, we hope that developers and our existing clients can try this new features. Now, you don’t need to spend a lot of money to get ASP.NET MVC 5.2 hosting.”

For more information about new ASP.NET MVC 5.2, please visit http://asphostportal.com/ASPNET-MVC-52-Hosting.

As a leading hosting provider, ASPHostPortal.com offers a comprehensive range of services including domain name registrations, servers, online backup solutions and dedicated web hosting. ASPHostPortal.com is well placed to deliver a high quality service.

About ASPHostPortal.com:

ASPHostPortal.com is a hosting company that best support in Windows and ASP.NET-based hosting. Services include shared hosting, reseller hosting, and sharepoint hosting, with specialty in ASP.NET, SQL Server, and architecting highly scalable solutions. As a leading small to mid-sized business web hosting provider, ASPHostPortal.com strive to offer the most technologically advanced hosting solutions available to all customers across the world. Security, reliability, and performance are at the core of hosting operations to ensure each site and/or application hosted is highly secured and performs at optimum level.



Cheap ASP.NET 4.5 Hosting

We’re a company that works differently to most. Value is what we output and help our customers achieve, not how much money we put in the bank. It’s not because we are altruistic. It’s based on an even simpler principle. "Do good things, and good things will come to you".

Success for us is something that is continually experienced, not something that is reached. For us it is all about the experience – more than the journey. Life is a continual experience. We see the Internet as being an incredible amplifier to the experience of life for all of us. It can help humanity come together to explode in knowledge exploration and discussion. It is continual enlightenment of new ideas, experiences, and passions


Author Link

 photo ahp banner aspnet-01_zps87l92lcl.png

 

Corporate Address (Location)

ASPHostPortal
170 W 56th Street, Suite 121
New York, NY 10019
United States

Tag cloud

Sign in