Chitika

June 27, 2012

ASP.NET MVC 4 WebAPI. Support Areas in HttpControllerSelector

This article was written for ASP.NET MVC 4 RC (Release Candidate). If you are still using Beta version of ASP.NET MVC 4 then you have to read the previous article.

HttpControllerFactory was deleted in ASP.NET MVC 4 RC. Actually, it was replaced by two interfaces: IHtttpControllerActivator and IHttpControllerSelector.

Unfortunately DefaultHttpControllerSelector still doesn't support Areas by default. To support it you have to write your HttpControllerSelector from scratch. To be honest, I will derive my selector from DefaultHttpControllerSelector.

In this post I will show you how you can do it.

AreaHttpControllerSelector

First of all, you have to derive your class from DefaultHttpControllerSelector class:

    public class AreaHttpControllerSelector : DefaultHttpControllerSelector
    {
        private readonly HttpConfiguration _configuration;

        public AreaHttpControllerSelector(HttpConfiguration configuration)
            : base(configuration)
        {
            _configuration = configuration;
        }
    }

In the constructor mentioned above I called the base constructor and stored the HttpConfiguration. We will use it a little bit later.

My code will use two constants:

        private const string ControllerSuffix = "Controller";
        private const string AreaRouteVariableName = "area";

You can understand why we need first one by name. The second one contains the name of the variable which we will use to specify area name in Routes collection.

Somewhere we have to store all of the API controllers.

        private Dictionary<string, Type> _apiControllerTypes;

        private Dictionary<string, Type> ApiControllerTypes
        {
            get { return _apiControllerTypes ?? (_apiControllerTypes = GetControllerTypes()); }
        }

        private static Dictionary<string, Type> GetControllerTypes()
        {
            var assemblies = AppDomain.CurrentDomain.GetAssemblies();

            var types = assemblies.SelectMany(a => a.GetTypes().Where(t => !t.IsAbstract && t.Name.EndsWith(ControllerSuffix) && typeof(IHttpController).IsAssignableFrom(t)))
                .ToDictionary(t => t.FullName, t => t);

            return types;
        }

Method GetControllerTypes takes all the API controllers types from all of your assemblies, and store it inside the dictionary, where the key is FullName of the type and value is the type itself.
Of course we will set this dictionary only once. And then just use it.

Now we are ready to implement one of the important method:

        public override HttpControllerDescriptor SelectController(HttpRequestMessage request)
        {
            return GetApiController(request) ?? base.SelectController(request);
        }

In that method I try to take the HttpControllerDescriptor from method GetApiController and if it return null then call the base method.

And additional methods:

        private static string GetAreaName(HttpRequestMessage request)
        {
            var data = request.GetRouteData();

            if (!data.Values.ContainsKey(AreaRouteVariableName))
            {
                return null;
            }

            return data.Values[AreaRouteVariableName].ToString().ToLower();
        }

        private Type GetControllerTypeByArea(string areaName, string controllerName)
        {
            var areaNameToFind = string.Format(".{0}.", areaName.ToLower());
            var controllerNameToFind = string.Format(".{0}{1}", controllerName, ControllerSuffix);

            return ApiControllerTypes.Where(t => t.Key.ToLower().Contains(areaNameToFind) && t.Key.EndsWith(controllerNameToFind, StringComparison.OrdinalIgnoreCase))
                    .Select(t => t.Value).FirstOrDefault();
        }

        private HttpControllerDescriptor GetApiController(HttpRequestMessage request)
        {
            var controllerName = base.GetControllerName(request);

            var areaName = GetAreaName(request);
            if (string.IsNullOrEmpty(areaName))
            {
                return null;
            }

            var type = GetControllerTypeByArea(areaName, controllerName);
            if (type == null)
            {
                return null;
            }

            return new HttpControllerDescriptor(_configuration, controllerName, type);
        }
Method GetAreaName just takes area name from HttpRequestMessage.

Method GetControllerTypeByArea are tries to find the controller in the ApiControllerTypes by full name of the controller where the full name contains area's name surrounded by "." (e.g. ".Admin.") and ends with controller name + controller suffix (e.g. UsersController).

And if a controller type found then method GetApiController will create and return back HttpControllerDescriptor.

So, my AreaHttpControllerSelector is ready to be registered in my application.

Registering AreaHttpControllerSelector

The next thing you have to do is to say to your application to use this controller selector instead of DefaultHttpControllerSelector. And fortunately it is really easy - just add one additional line to the end of Application_Start method in Glogal.asax file:
        protected void Application_Start()
        {
            // your default code
                    GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerSelector), new AreaHttpControllerSelector(GlobalConfiguration.Configuration));
        }
That's all.

Using AreaHttpControllerSelector

If you did everything right, now you can forget about that "nightmare" code mentioned above. And just start to use it!

You have to add new HttpRoute to your AreaRegistration.cs file:

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.Routes.MapHttpRoute(
                name: "Admin_Api",
                routeTemplate: "api/admin/{controller}/{id}",
                defaults: new { area = "admin", id = RouteParameter.Optional }
            );

            // other mappings
        }

Or just use one global route in your Global.asax like:


            routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{area}/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

That's all. Good luck, and have a nice day.

208 comments:

  1. This is great but it doesn't work if you are passing a complex type in the Get as per below:

    public IEnumerable Get([FromUri] ApiCriteria apiCriteria)

    When you pass values over in the query string that map to the complex type we get:

    No action was found on the controller 'Apis' that matches the request.

    but without the query string values it finds it.

    It works fine using the DefaultHttpControllerSelector and I haven't yet got to the bottom as to why.

    Shame as I could really do with using it to seperate my controllers into areas.

    ReplyDelete
    Replies
    1. Thanks for the comment.
      Yes, for now it is not so easy to fix it.

      But there is one workaround. You can create a special route and pass the parameters in a URL. So, you can split your complex type to simple types.

      For example, instead of:
      public IEnumerable Get(Person person) { ... }
      You can use:
      public IEnumerable Get(string firstName, string lastName) { ... }

      and map the route:
      routes.MapHttpRoute(
      name: "DefaultApiPerson",
      routeTemplate: "api/{area}/{controller}/{firstName}/{lastName}"
      );

      I hope it would help.

      Delete
    2. Hello Andrew and Anonymous.

      I found a solution that supports splitting webapi's across areas while maintaining querystring functionality. The trick is to store the area name in the route's DataTokens, rather than the default parameter list. The latter will confuse the routing engine and break querystring support. The updated version of Andrew's AreaHttpControllerSelector can be found in a blog post I just finished writing:

      ASP.NET MVC 4 RC: Getting WebApi and Areas to play nicely

      Thank you, Andrew, for writing this post. It helped me get on the right track! :)

      Delete
    3. Thank you Martin, for finish this topic.

      Delete
  2. Interestingly the namespaces default value extension got added to the MapHttpRoute in RC. This provides me with, (instead of using areas and this selector), another way of creating granular controllers grouped by namespaces but this suffers the same issue with not honouring the [FromUri] attribute.

    It is a pain because [FromUri] is the way to decorate and consume complex types in the Get methods for sure.

    ReplyDelete
  3. I decided to use your code as a base for a solution for versioning APIs:

    http://www.tuomistolari.net/blog/2012/8/23/webapi-convention-based-versioning-with-accept-headers.html

    ReplyDelete
  4. This is great ! I spent hours figuring out how to make Web Api and Areas work together and with your code, it just worked !

    Thanks a lot.

    ReplyDelete
  5. Your article was helpful, but I'm a little confused on what this gets you?

    I was able to add an area "Whatever" and add using System.Web.Http statement to the WhateverAreaRegistration class and map the route via context.Routes.MapHttpRoute in the RegisterArea method and the route get() just worked.

    I then thought maybe you were trying to make it such that you don't need to add the route in each area registration class, but I was able to accomplish that by removing what I did above and then doing the following in the Global.asax.cs Application_Start - RegisterRoutes method:

    routes.MapHttpRoute(
    name: "DefaultAreaApi",
    routeTemplate: "api/{area}/{controller}/{id}",
    defaults: new {id = RouteParameter.Optional}
    );

    routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
    );


    ReplyDelete
    Replies
    1. Could you try to create the API controllers with the same names in the different areas? ;)

      Delete
    2. I see. It wasn't clear to me that the problem this post aims to solve is this exception:

      Multiple types were found that match the controller named 'blah'. This can happen if the route that services this request ('services/{area}/{controller}/{id}') found multiple controllers defined with the same name but differing namespaces, which is not supported. The request for 'blah' has found the following matching controllers: MyProject.Web.Areas.Whatever.Controllers.BlahController MyProject.Web.Areas.Whatever2.Controllers.BlahController

      Makes sense now and works great. Thanks for the post and reply! ;)

      Delete
    3. Another question... It seems if I define the route in the global routes as api/{area}/{controller} it works. If I define the route as either {area}/api/{controller} or api/{area}/{controller} (flipping api and area) in each [Controller]AreaRegistration class it works either way. But if I flip it in the global route and try to define it as {area}/api/{controller} it doesn't work. Any thoughts on why this doesn't work (or are you able to do this)?

      Another caveat that I found is that you still can't have a controller at the root with the same name as a controller in an area. Is that correct?

      Thanks!

      Delete
    4. > Another caveat that I found is that you still can't have a controller at the root with the same name as a controller in an area. Is that correct?
      Yes, it's correct.

      > But if I flip it in the global route and try to define it as {area}/api/{controller} it doesn't work
      sorry, but I can't say exactly why it does not work now. I should check.

      Delete
  6. Thanks for you posting, but seems I can't find a controller by search ".{area}." with full controller class name.

    I'm using the self-host Web API, after loaded all controller types, the sample controller fullname with format SelfHost.ProductsController, even I already add area while config the MapHttpRoute.

    Am I missing any steps, or this way don't support self host Web API?

    ReplyDelete
  7. Ohh! Saved my life! thank you for an amazng fix.

    ReplyDelete
  8. Wow! thanks! this saved me a lot of agony. But I still have a problem. The automatic help generator generates other items that are not there because of the routing. I have the routes
    api/admin/{controller}/{id}
    api/{area}/{controller}/{id}
    I have controllers MyProject.Web.Admin.AccountsController and MyProject.Web.NewsController
    now in the documentation I get, options like
    GET api/admin/accounts
    GET api/admin/news
    GET api/accounts
    GET api/news
    Obviously that throws an exception. Any idea of how to solve that

    ReplyDelete
  9. This comment has been removed by the author.

    ReplyDelete
  10. This is really nice. Thanks for sharing this article
    Dot net training Chennai

    ReplyDelete
  11. Thanks for sharing this useful information..Its really very informative.

    Dot Net Course Chennai

    ReplyDelete
  12. Thanks for sharing informative post about Microsoft Visual Studio. This platform is used to create web application and services. Being widely used software framework, this domain offer huge career opportunity for trained professionals. We at, DOT NET Training offer hands on training in this evergreen technology.

    ReplyDelete
  13. I get a lot of great information from this blog. Thank you for your sharing this informative blog. I have bookmarked this page for my future reference. Recently I did oracle certification course at a leading academy. If you are looking for best Oracle Training in Chennai visit FITA IT training and placement academy which offer PL SQL Training in Chennai.

    ReplyDelete
  14. Thanks for sharing these niche piece of coding to our knowledge. Here, I had a solution for my inconclusive problems & it’s really helps me a lot keep updates…
    DOT NET Training in Chennai | Fita Chennai Reviews

    ReplyDelete


  15. Thanks for sharing this informative blog. FITA provides Salesforce Course in Chennai with years of experienced professionals and fully hands-on classes. Salesforce is a cloud based CRM software. Today's most of the IT industry use this software for customer relationship management. To know more details about salesforce reach FITA Academy. Rated as No.1 Salesforce Training Institutes in Chennai.

    ReplyDelete
  16. SAP Training

    Thanks for sharing this valuable information.and I gathered some information from this blog. I did SAP Course in Chennai, at FITA Academy which offer best SAP Training in Chennai with years of experienced professionals.

    SAP Training Institute in Chennai

    ReplyDelete
  17. I have read your blog and i got a very useful and knowledgeable information from your blog.You have done a great job . If anyone want to get Salesforce Training in Chennai, Please visit FITA academy located at Chennai Velachery. Rated as No.1 Salesforce Training Institutes in Chennai.

    ReplyDelete
  18. Thanks for sharing this valuable information to our vision. You have posted a trust worthy blog keep sharing.

    html5 Training in chennai | html5 Training chennai

    ReplyDelete
  19. Your posts is really helpful for me.Thanks for your wonderful post. I am very happy to read your post.

    Mysql Training in chennai | Mysql Training chennai

    ReplyDelete
  20. There are lots of information about latest technology and how to get trained in them, like Big Data Training in Chennai have spread around the web, but this is a unique one according to me. The strategy you have updated here will make me to get trained in future technologies(Big Data Training). By the way you are running a great blog. Thanks for sharing this. cloud computing training in chennai

    ReplyDelete
  21. Oracle DBA Training in Chennai
    Thanks for sharing this informative blog. I did Oracle DBA Certification in Greens Technology at Adyar. This is really useful for me to make a bright career..

    ReplyDelete
  22. Whatever we gathered information from the blogs, we should implement that in practically then only we can understand that exact thing clearly, but it’s no need to do it, because you have explained the concepts very well. It was crystal clear, keep sharing..
    Websphere Training in Chennai

    ReplyDelete
  23. Data warehousing Training in Chennai
    I am reading your post from the beginning, it was so interesting to read & I feel thanks to you for posting such a good blog, keep updates regularly..

    ReplyDelete
  24. Selenium Training in Chennai
    Wonderful blog.. Thanks for sharing informative blog.. its very useful to me..

    ReplyDelete
  25. Oracle Training in chennai
    Thanks for sharing such a great information..Its really nice and informative..

    ReplyDelete
  26. I have read your blog and i got a very useful and knowledgeable information from your blog.You have done a great job.
    SAP Training in Chennai

    ReplyDelete
  27. This information is impressive..I am inspired with your post writing style & how continuously you describe this topic. After reading your post,thanks for taking the time to discuss this, I feel happy about it and I love learning more about this topic
    Android Training In Chennai In Chennai

    ReplyDelete
  28. Pretty article! I found some useful information in your blog, it was awesome to read,thanks for sharing this great content to my vision, keep sharing..
    Unix Training In Chennai

    ReplyDelete
  29. I found some useful information in your blog, it was awesome to read, thanks for sharing this great content to my vision, keep sharing..
    SalesForce Training in Chennai

    ReplyDelete
  30. There are lots of information about latest technology and how to get trained in them, like Best Hadoop Training In Chennai have spread around the web, but this is a unique one according to me. The strategy you have updated here will make me to get trained in future technologies Hadoop Training in Chennai By the way you are running a great blog. Thanks for sharing this blogs..

    ReplyDelete
  31. Wow! It was the best article , actually you have posted something new compared to others, because I read many articles related to this topic but I only get impressed with your post only, keep posting.
    Regards,
    Informatica training in chennai|Best Informatica Training In Chennai|Informatica course in Chennai

    ReplyDelete
  32. This information is impressive; I am inspired with your post writing style & how continuously you describe this topic. After reading your post, thanks for taking the time to discuss this, I feel happy about it and I love learning more about this topic..
    Informatica Training in chennai | QTP Training in Chennai



    ReplyDelete
  33. This information is impressive; I am inspired with your post writing style & how continuously you describe this topic. After reading your post, thanks for taking the time to discuss this, I feel happy about it and I love learning more about this topic..
    Informatica Training in chennai | QTP Training in Chennai



    ReplyDelete
  34. This information is impressive; I am inspired with your post writing style & how continuously you describe this topic. After reading your post, thanks for taking the time to discuss this, I feel happy about it and I love learning more about this topic..
    Selenium Training in Chennai | QTP Training in Chennai

    ReplyDelete
  35. Thanks for Information Oracle Apps Technical is a collection of a bunch of collected applications like accounts payables, purchasing, inventory, accounts receivables, human resources, order management, general ledger and fixed assets, etc which have its own functionality for serving the business
    Oracle Apps Training In Chennai

    ReplyDelete
  36. Oracle Training in chennai | Oracle D2K Training In chennai
    This information is impressive; I am inspired with your post writing style & how continuously you describe this topic. After reading your post, thanks for taking the time to discuss this, I feel happy about it and I love learning more about this topic..

    ReplyDelete
  37. It’s too informative blog and I am getting conglomerations of info’s. Thanks for sharing; I would like to see your updates regularly so keep blogging. If anyone looking car just get here
    Regards,
    sas training in Chennai|sas course in Chennai|sas institutes in Chennai

    ReplyDelete
  38. Pretty Post! It is really interesting to read from the beginning & I would like to share your blog to my circles for getting awesome knowledge, keep your blog as updated.
    Regards,
    Oracle Training in Chennai|Oracle DBA Training in Chennai|Oracle Training Institutes in Chennai

    ReplyDelete
  39. Thanks for sharing this informative blog. If you are interested in taking .net in professional carrier visit this website.Dot Net Training in Chennai

    ReplyDelete
  40. Really awesome blog. Your blog is really useful for me. Thanks for sharing this informative blog. Keep update your blog.
    Oracle Training In Chennai

    ReplyDelete
  41. Best SAS Training Institute In Chennai It’s too informative blog and I am getting conglomerations of info’s about Oracle interview questions and answer .Thanks for sharing, I would like to see your updates regularly so keep blogging.

    ReplyDelete
  42. I am not getting this much information in any other blogs, Thanks admin for giving detail stuffs of MI am not getting this much information about Cloud computing in any other blogs, Thanks admin for giving detail stuffs of MVC.
    Regards,
    Cloud computing course in Chennai|cloud training in chennai.

    ReplyDelete
  43. Phone calls can be composed so that the calling party calls alternate members and adds them to the call; be that as it may, members are generally ready to call into the telephone call themselves by dialing a phone number that interfaces with a "meeting extension" (a specific sort of hardware that connections phone lines).Conference Calling Via Phone

    ReplyDelete
  44. Well Said, you have furnished the right information that will be useful to anyone at all time. Thanks for sharing your Ideas.
    oracle training in chennai | oracle training institutes in chennai

    ReplyDelete
  45. for preparing bank exam and group exam , we are providing an online test model questions papers

    Group Exam Questions and Answers
    Bank Exam Questions and Answers

    ReplyDelete
  46. Tremendous information, i had come to recognise about your blog from my buddy nandu , hyderaba.
    I have read atleast 7 posts of yours through now, and let me inform you, your website gives the
    Great and the maximum interesting records. that is just the form of statistics that i had
    Been searching out, i'm already your rss reader now and i'd frequently be careful for the brand new posts.
    from
    oracle cloud fusion financials

    ReplyDelete
  47. I get a lot of great information from this blog.
    Thank you for your sharing this informative blog.
    I have bookmarked this page for my future reference.
    Recently I did oracle certification course at a leading academy.
    If you are looking for best Oracle Training in Chennai visit http://call360.in/Chennai/educational_institutes_greens_technology_adyar_adyar.php training
    and placement academy which offer PL SQL Training in Chennai.

    ReplyDelete
  48. Fastest local business directory in India CALL360

    ReplyDelete
  49. GREEN WOMEN HOSTELGreen Women hostel is one of the leading Ladies hostel in Adyar and we serving an excellent service to Staying people, We create a home atmosphere, it is the best place for Working WomenOur hostel Surrounded around bus depot, hospital, atm, bank, medical Shop & 24 hours Security Facility

    ReplyDelete
  50. https://shilohjanee.blogspot.in/2015/08/working-women-hostel-in-chennai_17.html?showComment=1492595069170#c8266620196316480802

    ReplyDelete

  51. This is excellent information. It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me...
    Android Training in Chennai
    Ios Training in Chennai

    ReplyDelete
  52. This is a great article, I have been always to read something with specific tips! I will have to work on the time for scheduling my learning.
    Dot Net Training in Chennai

    ReplyDelete
  53. Very good idea you've shared here, from here I can be a very valuable new experience.
    Java Training in Chennai
    Java Training Institute in Chennai

    ReplyDelete
  54. It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me...
    Android Training in Chennai
    Ios Training in Chennai

    ReplyDelete
  55. That was an educative piece of article on Support Areas in HttpControllerSelector and I have understood a lot of facts and principles in addition to the shared programs. Thanks for sharing with us such an informative and educative post. I will be recommending it to our professional editors who offer editing services to individuals who Need Citation Auditing Help.

    ReplyDelete
  56. I like your writing style, it was very clear to understanding the concept well; I hope you ll keep your blog as updated.
    Regards,
    Hadoop Training Chennai|Hadoop Training in Chennai

    ReplyDelete
  57. It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me...
    Android Training in Chennai
    Ios Training in Chennai

    ReplyDelete
  58. it is really amazing...thanks for sharing....provide more useful information...
    Mobile app development company

    ReplyDelete
  59. Thank you for taking the time and sharing this information with us. It was indeed very helpful and insightful while being straight forward and to the point.
    www.mcdonaldsgutscheine.net | www.startlr.com | www.saludlimpia.com

    ReplyDelete
  60. Very good informative and explanation with screenshot is really wonderful.

    Dot Net Training in chennai

    ReplyDelete
  61. Excellent blog,great explanation using screenshot...
    Dot Net Training in chennai

    ReplyDelete
  62. Really it was an awesome article...very interesting to read..You have provided an nice article....Thanks for sharing..
    Android Training in Chennai
    Ios Training in Chennai

    ReplyDelete
  63. Thanks for sharing informative article… Know about How to Change BSNL WiFi Password from techfizy.

    ReplyDelete
  64. I like the post format as you create user engagement in the complete article. It seems round up of all published posts. Thanks for gauging the informative posts.
    cara menggugurkan kandungan

    ReplyDelete

  65. Informative blog and it was up to the point describing the information very effectively. Thanks to blog author for wonderful and informative post.

    IOS Application Developers Chennai | IOS Application Developers in Chennai | IOS App Developers in
    Chennai

    ReplyDelete
  66. I believe there are many more pleasurable opportunities ahead for individuals that looked at your site.

    Best Java Training Institute Chennai
    Java Training Institute Bangalore

    ReplyDelete
  67. Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.
    amazon-web-services-training-in-bangalore

    ReplyDelete
  68. Thank you a lot for providing individuals with a very spectacular possibility to read critical reviews from this site.

    Best Java Training Institute Chennai


    Amazon Web Services Training in Chennai

    ReplyDelete
  69. I simply wanted to write down a quick word to say thanks to you for those wonderful tips and hints you are showing on this site.
    Best selenium training Institute in chennai

    ReplyDelete
  70. Ciitnoida provides Core and java training institute in

    noida
    . We have a team of experienced Java professionals who help our students learn Java with the help of Live Base Projects. The object-

    oriented, java training in noida , class-based build

    of Java has made it one of most popular programming languages and the demand of professionals with certification in Advance Java training is at an

    all-time high not just in India but foreign countries too.

    By helping our students understand the fundamentals and Advance concepts of Java, we prepare them for a successful programming career. With over 13

    years of sound experience, we have successfully trained hundreds of students in Noida and have been able to turn ourselves into an institute for best

    Java training in Noida.

    java training institute in noida
    java training in noida
    best java training institute in noida
    java coaching in noida
    java institute in noida

    ReplyDelete
  71. Needed to compose you a very little word to thank you yet again regarding the nice suggestions you’ve contributed here.
    Best selenium training Institute in chennai

    ReplyDelete
  72. I simply wanted to write down a quick word to say thanks to you for those wonderful tips and hints you are showing on this site.
    Best Python training Institute in chennai

    ReplyDelete
  73. This comment has been removed by the author.

    ReplyDelete
  74. sap fico training in noida

    CIITN is the Best summer sap fico training in noida
    for B.Tech/ M.TECH /BE/ B.SC/ M.sc / BCA/ MCA/ CS/CSE/IT/ Information Technology/ Engineering Student. Summer Training in Noida Offer by CIITN for all engineering domains. It has a dedicated placement cell which provides 100% placement assistance to students. The benefits that a student gets out of summer training are innumerable. CIITN, Best Summer training Center for B.Tech/CS/CSE/IT/ BCA/MCA/ B.E /M.tech / B.sc/ M.sc/ Engineering Student has already accomplished itself successfully in the field of Training and Development after setting milestones and bringing smiles to the faces of more than 1 Lakh students. CIITN was incorporated in the year 2002 and over the years CIITN has grown remarkably into the greatest training giant of Northern India. CIITN InfoTech is the only organization that is operating in three vertical domains- Training, Software & Embedded Development and consulting. Quality is the first and foremost indicator for CIITN. CIITN emphasizes on Quality and understands the importance of imparting Quality Technical Education in creating competitive advantage. CIITN, Top Summer Course Institute for BE / Computer Science/CSE/IT/ Information Technology/ BCA/ MCA/ B.sc/ M.sc/ B.Tech/ M.Tech/ Engineering Studentboasts to have its trainers and experts from some of the best industries.
    Sap Training in Noida

    ReplyDelete
  75. Great Post. Keep sharing such kind of noteworthy information.

    IoT Training in Chennai | IoT Courses in Chennai

    ReplyDelete
  76. This was an nice and amazing and the given contents were very useful and the precision has given here is good.
    Data Science Training in Chennai

    ReplyDelete
  77. Amazon Web Services (AWS) certification training helps you to gain real time hands on experience on AWS.Aws Training in Bangalore.

    ReplyDelete
  78. good information provided in the blog thanks for sharing for more visit
    Dot Net MVC Training in Texas

    ReplyDelete
    Replies
    1. Hi there I am so thrilled I found your website, I really found you by mistake, while I was browsing on Yahoo for something else, Anyhow I am here now and would just like to say thanks a lot for a tremendous post and an all-round exciting blog (I also love the theme/design), I don’t have time to go through it all at the minute but I have saved it and also added in your RSS feeds, so when I have time I will be back to read more, Please do keep up the awesome job.

      Aws Training in Chennai

      Delete
  79. Great blog, Its really give such wonderful information, that was very useful for me. Thanks for sharing with us.

    Dot Net Training in Chennai

    ReplyDelete
  80. Howdy, would you mind letting me know which web host you’re utilizing? I’ve loaded your blog in 3 completely different web browsers, and I must say this blog loads a lot quicker than most. Can you suggest a good internet hosting provider at a reasonable price?
    Hadoop Training in Bangalore
    Hadoop Training in Chennai

    ReplyDelete
  81. Thank you for taking the time and sharing this information with us. It was indeed very helpful and insightful while being straight forward and to the point.
    python training in omr

    python training in annanagar | python training in chennai

    python training in marathahalli | python training in btm layout

    python training in rajaji nagar | python training in jayanagar

    ReplyDelete
  82. After seeing your article I want to say that the presentation is very good and also a well-written article with some very good information which is very useful for the readers....thanks for sharing it and do share more posts like this.

    java training in omr

    java training in annanagar | java training in chennai

    java training in marathahalli | java training in btm layout

    java training in rajaji nagar | java training in jayanagar

    ReplyDelete
  83. Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.
    Devops Training in pune

    Devops Training in Chennai

    Devops Training in Bangalore

    AWS Training in chennai

    AWS Training in bangalore

    ReplyDelete
  84. This comment has been removed by the author.

    ReplyDelete
  85. Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.

    rpa training in Chennai | rpa training in pune

    rpa training in tambaram | rpa training in sholinganallur

    rpa training in Chennai | rpa training in velachery

    rpa online training | rpa training in bangalore

    ReplyDelete
  86. myTectra Amazon Web Services (AWS) certification training helps you to gain real time hands on experience on AWS. myTectra offers AWS training in Bangalore using classroom and AWS Online Training globally. AWS Training at myTectra delivered by the experienced professional who has atleast 4 years of relavent AWS experince and overall 8-15 years of IT experience. myTectra Offers AWS Training since 2013 and retained the positions of Top AWS Training Company in Bangalore and India.
    aws training in bangalore

    ReplyDelete
  87. Harvard Business Review named data scientist the "sexiest job of the 21st century".This Data Science course will cover the whole data life cycle ranging from Data Acquisition and Data Storage using R-Hadoop concepts, Applying modelling through R programming using Machine learning algorithms and illustrate impeccable Data Visualization by leveraging on 'R' capabilities.With companies across industries striving to bring their research and analysis (R&A) departments up to speed, the demand for qualified data scientists is rising.

    data science training in bangalore

    ReplyDelete
  88. Big Data and Hadoop is an ecosystem of open source components that fundamentally changes the way enterprises store, process, and analyze data.
    hadoop training in bangalore

    ReplyDelete
  89. IOT Training in Bangalore - Live Online & Classroom
    Iot Training course observes iot as the platform for networking of different devices on the internet and their inter related communication. Iot Training in Bangalore

    ReplyDelete
  90. I have picked cheery a lot of useful clothes outdated of this amazing blog. I’d love to return greater than and over again. Thanks! 
    python training in rajajinagar
    Python training in btm
    Python training in usa

    ReplyDelete
  91. Thanks for such a great article here. I was searching for something like this for quite a long time and at last I’ve found it on your blog. It was definitely interesting for me to read  about their market situation nowadays.
    java training in chennai | java training in bangalore

    java online training | java training in pune

    ReplyDelete
  92. Very nice post here and thanks for it .I always like and such a super contents of these post.Excellent and very cool idea and great content of different kinds of the valuable information's.

    angularjs Training in bangalore

    angularjs Training in btm

    angularjs Training in electronic-city

    angularjs Training in online

    angularjs Training in marathahalli

    ReplyDelete
  93. Gaining Python certifications will validate your skills and advance your career.
    python certufication

    ReplyDelete
  94. I found this informative and interesting blog so i think so its very useful and knowledge able.I would like to thank you for the efforts you have made in writing this article.
    python training in velachery
    python training institute in chennai

    ReplyDelete
  95. Thanks you for sharing this unique useful information content with us. Really awesome work. keep on blogging
    Devops Training in Chennai
    Devops training in sholinganallur

    ReplyDelete
  96. Thank you for benefiting from time to focus on this kind of, I feel firmly about it and also really like comprehending far more with this particular subject matter. In case doable, when you get know-how, is it possible to thoughts modernizing your site together with far more details? It’s extremely useful to me.
    Data Science course in rajaji nagar | Data Science with Python course in chenni
    Data Science course in electronic city | Data Science course in USA
    Data science course in pune | Data science course in kalyan nagar


    ReplyDelete
  97. Superb. I really enjoyed very much with this article here. Really it is an amazing article I had ever read. I hope it will help a lot for all. Thank you so much for this amazing posts and please keep update like this excellent article.thank you for sharing such a great blog with us. expecting for your.
    Best Java Training in Chennai
    Best Java Training in Bangalore
    Java Courses in Chennai Mogappair
    Java Training in Ashok Nagar
    Java Training in Kelambakkam

    ReplyDelete
  98. I really loved reading your blog. It was very well authored and easy to undertand. Unlike additional blogs I have read which are really not tht good. I also found your posts very interesting. In fact after reading. I had to go show it to my friend and he ejoyed it as well!
    dot net training in chennai

    ReplyDelete
  99. I’m experiencing some small security issues with my latest blog, and I’d like to find something safer. Do you have any suggestions?
    fire and safety course in chennai

    ReplyDelete
  100. Your new valuable key points imply much a person like me and extremely more to my office workers. With thanks; from every one of us.
    nebosh course in chennai

    ReplyDelete
  101. Good job! Fruitful article. I like this very much. It is very useful for my research. It shows your interest in this topic very well. I hope you will post some more information about the software. Please keep sharing!!
    AWS Course in Chennai
    Aws Certification in Chennai
    Best AWS Training in Bangalore
    AWS Training in Nolambur
    AWS Training Institutes in T nagar

    ReplyDelete

  102. Outstanding blog thanks for sharing such wonderful blog with us ,after long time came across such knowledgble blog. keep sharing such informative blog with us.
    Air Hostess Training in Chennai | Air Hostess Training Institute in Chennai | Air Hostess Academy in Chennai | Air Hostess Course in Chennai | Air Hostess Institute in Chennai


    ReplyDelete
  103. Devops is not a Tool.Devops Is a Practice, Methodology, Culture or process used in an Organization or Company for fast collaboration, integration and communication between Development and Operational Teams. In order to increase, automate the speed of productivity and delivery with reliability.

    python training in bangalore
    aws training in bangalore
    artificial intelligence training in bangalore
    data science training in bangalore
    machine learning training in bangalore
    hadoop training in bangalore
    devops training in bangalore

    ReplyDelete
  104. Gaining Python certifications will validate your skills and advance your career.
    python certification

    ReplyDelete
  105. It’s always so sweet and also full of a lot of fun for me personally and my office colleagues to search you blog a minimum of thrice in a week to see the new guidance you have got.
    safety course in chennai

    ReplyDelete
  106. Hmm, it seems like your site ate my first comment (it was extremely long) so I guess I’ll just sum it up what I had written and say, I’m thoroughly enjoying your blog. I as well as an aspiring blog writer, but I’m still new to the whole thing. Do you have any recommendations for newbie blog writers? I’d appreciate it.
    Best Selenium Training in Chennai | Selenium Training Institute in Chennai | Besant Technologies

    Selenium Training in Bangalore | Best Selenium Training in Bangalore

    ReplyDelete
  107. I would like to thank you for the efforts you have made in writing this article. I am hoping the same best work from you in the future as well. In fact your creative writing abilities has inspired me to start my own BlogEngine blog now. Really the blogging is spreading its wings rapidly. Your write up is a fine example of it.
    python training in pune | python training institute in chennai | python training in Bangalore

    ReplyDelete
  108. I am really enjoying reading your well-written articles. It looks like you spend a lot of effort and time on your blog. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work.
    data science course in bangalore
    Deep Learning course in Marathahalli Bangalore
    NLP course in Marathahalli Bangalore
    AWS course in Marathahalli Bangalore

    ReplyDelete
  109. Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.
    Devops Training courses
    Devops Training in Bangalore
    Best Devops Training in pune

    ReplyDelete
  110. myTectra offers DevOps Training in Bangalore,Chennai, Pune using Class Room. myTectra offers Live Online DevOps Training Globally

    ReplyDelete
  111. myTectra a global learning solutions company helps transform people and organization to gain real, lasting benefits.Join Today.Ready to Unlock your Learning Potential ! Read More....

    ReplyDelete
  112. myTectra offers corporate training services in Bangalore for range of courses on various domain including Information Technology, Digital Marketing and Business courses like Financial Accounting, Human Resource Management, Health and Safety, Soft Skill Development, Quality & Auditing, Food Safety & Hygiene. myTectra is one of the leading corporate training companies in bangalore offers training on more than 500+ courses
    corporate training in bangalore
    top 10 corporate training companies in india
    corporate training
    corporate training companies
    along these we are going to help the professionals and students to crack their interview with interview questions and answers look a head into sites you might be like....
    salesforce interview questions
    bootstrap interview questions

    ReplyDelete
  113. DevOps is currently a popular model currently organizations all over the world moving towards to it. Your post gave a clear idea about knowing the DevOps model and its importance.

    Good to learn about DevOps at this time.

    devops training in chennai | devops training in chennai with placement | devops training in chennai omr | devops training in velachery | devops training in chennai tambaram | devops institutes in chennai

    ReplyDelete
  114. your post is the very organized way and easily understandable. Doing a good job. Thank you for sharing this content.
    rpa training in chennai | rpa training in velachery | rpa training in chennai omr


    ReplyDelete
  115. Great article on Blueprism .. I love to read your article on Blueprism because your way of representation and writing style makes it intresting. The speciality of this blog on Blueprism is that the reader never gets bored because its same Intresting from 1 line to last line. Really appericable post on Blueprism.
    Thanks and Regards,
    Uipath training in chennai

    ReplyDelete
  116. I think this is the best article today about the future technology. Thanks for taking your own time to discuss this topic, I feel happy about that curiosity has increased to learn more about this topic. Keep sharing your information regularly for my future reference.
    Selenium Training in Chennai
    selenium testing training in chennai
    iOS Training in Chennai
    testing training
    testing Courses in Chennai

    ReplyDelete
  117. I like it and help me to development very well. Thank you for this brief explanation and very nice information. Well, got a good knowledge.
    safety courses in chennai

    ReplyDelete

  118. Amazon has a simple web services interface that you can use to store and retrieve any amount of data, at any time, from anywhere on the web. Amazon Web Services (AWS) is a secure cloud services platform, offering compute power, database storage, content delivery and other functionality to help businesses scale and grow.For more information visit.
    aws online training
    aws training in hyderabad
    aws online training in hyderabad

    ReplyDelete
  119. Thanks for such a great article here. I was searching for something like this for quite a long time and at last I’ve found it on your blog. It was definitely interesting for me to read about their market situation nowadays. Well written article.Thank You Sharing with Us Please keep Sharing For More info on asp.net. please follow our android article.android java interview questions and answers for experienced | android code structure best practices

    ReplyDelete
  120. It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me...
    Best Devops Training in pune | Java training in Pune

    ReplyDelete
  121. Thank you so much for a well written, easy to understand article on this. It can get really confusing when trying to explain it – but you did a great job. Thank you!

    python interview questions and answers | python tutorialspython course institute in electronic city

    ReplyDelete
  122. Thanks for such a nice article on Blueprism.Amazing information of Blueprism you have . Keep sharing and updating this wonderful blog on Blueprism
    Thanks and regards,
    blue prism training in chennai
    blue prism training institute in chennai
    Blueprism certification in chennai

    ReplyDelete
  123. Selenium is one of the most popular automated testing tool used to automate various types of applications. Selenium is a package of several testing tools designed in a way for to support and encourage automation testing of functional aspects of web-based applications and a wide range of browsers and platforms and for the same reason, it is referred to as a Suite.

    Selenium Interview Questions and Answers
    Javascript Interview Questions
    Human Resource (HR) Interview Questions

    ReplyDelete
  124. Nice Article,Great experience for me by reading this info.
    thanks for sharing the information with us.keep updating your ideas.
    AWS Certification Training in Bangalore
    AWS Training in Mogappair
    AWS Training in Nungambakkam

    ReplyDelete
  125. Thank you for sharing your article. Great efforts put it to find the list of articles which is very useful to know, Definitely will share the same to other forums.
    Data Science Training in chennai at Credo Systemz | data science course fees in chennai | data science course in chennai quora | data science with python training in chennai

    ReplyDelete
  126. JavaScript is the most widely deployed language in the world
    Javascript Interview Questions

    ReplyDelete
  127. Thank you for sharing your article. Great efforts put it to find the list of articles which is very useful to know, Definitely will share the same to other forums.
    Data Science Training in chennai at Credo Systemz | data science course fees in chennai | data science course in chennai quora | data science with python training in chennai

    ReplyDelete
  128. Whoa! I’m enjoying the template/theme of this website. It’s simple, yet effective. A lot of times it’s very hard to get that “perfect balance” between superb usability and visual appeal. I must say you’ve done a very good job with this.

    Oracle Training in Chennai | Best Oracle Training Institute in Chennai
    Web Design Training in Chennai
    Web Design Training in Chennai|Best Web Design Training in Chennai
    AngularJS Training in Chennai |Advanced SAS Training in Chennai | Best SAS Training in Chennai

    ReplyDelete
  129. Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work.
    R Programming training in Chennai | R Programming Training in Chennai with placement | R Programming Interview Questions and Answers | Trending Software Technologies in 2018

    ReplyDelete
  130. Good job in presenting the correct content with the clear explanation. The content looks real with valid information. Good Work

    DevOps is currently a popular model currently organizations all over the world moving towards to it. Your post gave a clear idea about knowing the DevOps model and its importance.

    Good to learn about DevOps at this time.


    devops training in chennai | devops training in chennai with placement | devops training in chennai omr | devops training in velachery | devops training in chennai tambaram | devops institutes in chennai | devops certification in chennai | trending technologies list 2018

    ReplyDelete
  131. It's really a nice experience to read your post. Thank you for sharing this useful information. If you are looking for more about Trending Software Technologies in 2018 | Hadoop Training in Chennai | big data Hadoop training and certification in Chennai

    ReplyDelete
  132. Thank you for sharing your article. Great efforts put it to find the list of articles which is very useful to know, Definitely will share the same to other forums.
    Data Science Training in chennai at Credo Systemz | data science course fees in chennai | data science course in chennai quora | data science with python training in chennai

    ReplyDelete
  133. Your blog is so inspiring for the young generations.thanks for sharing your information with us and please update more new ideas.
    Android Training in Navalur
    Android Training in Saidapet
    Android Training in Nolambur
    android application development training in bangalore

    ReplyDelete
  134. It has been just unfathomably liberal with you to give straightforwardly what precisely numerous people would've promoted for an eBook to wind up making some money for their end, basically given that you could have attempted it in the occasion you needed.fire and safety course in chennai

    ReplyDelete
  135. I accept there are numerous more pleasurable open doors ahead for people that took a gander at your site.nebosh course in chennai

    ReplyDelete
  136. Nice tutorial. Thanks for sharing the valuable information. it’s really helpful. Who want to learn this blog most helpful. Keep sharing on updated tutorials…
    angularjs Training in bangalore

    angularjs Training in bangalore

    angularjs online Training

    angularjs Training in marathahalli

    angularjs interview questions and answers

    ReplyDelete
  137. It's really a nice experience to read your post. Thank you for sharing this useful information. If you are looking for more about Roles and reponsibilities of hadoop developer | hadoop developer skills Set | hadoop training course fees in chennai | Hadoop Training in Chennai Omr

    ReplyDelete