DNN

August 25, 2017

Streamlining Azure AppService Backups for DNN/Evoq

With the continued adoption of Azure, and the great pricing, I am seeing more sites migrating to Azure. As we see more sites moving to Azure, I am starting to notice a few trends with regards to the way that sites are configured, backed-up, and restored using the Azure AppServices features. This post will look specifically at how to control your Backup processes with relation to DNN files to ensure a higher success rate for backups if there is interest in these topics I'll follow up with other Azure specific information.

June 30, 2017

June 2017 DNN/Evoq and Module Security Summary

The past week has been a bit hectic in the DotNetNuke/Evoq space. Four confirmed security vulnerabilities were identified that could impact existing installations, one last week and three this week. Sadly, many sites have already been exploited by these vulnerabilities, adding a bit more urgency to the situation. Although many people are aware of the situation we have found that not everyone knows what is going on, so we thought it would be prudent to share what we know about the situation. This information is being shared both on Mitchel's Technical Blog as well as our corporate website.

November 09, 2016

Be Part of the Future: Test/Review DNN 9.x

Exciting times are upon us as users within the DNN ecosystem, regardless of if we are users of the OpenSource DNN Platform product, or if we are users of the commercial Evoq product lines.  The next release of DNN 9 will include some of the most significant changes to functionality that we have seen in many years.  With the coming change, we are at a crossroad, where community involvement is critical to ensure that the next version of the product is as good as possible.

September 24, 2016

Properly Using DNN's Custom 404 Page

Recent issues with a few clients I have encountered some "unusual" behaviors.  Either a situation where we had an unusual redirect situation, or we had pages that were showing HTTP 200 (success) status responses when in all reality the page truly didn't exist.  In the end, we had an IIS customization configured to handle certain types of 404's that DNN wouldn't handle, such as those for missing images, javascript files, and more.  Nothing that we haven't done for quite a while.
May 26, 2016

Resolving Issues with Security Compromised DNN Sites

Yesterday I published a blog posting about a recently re-surfaced security vulnerability within the DNN/Evoq platform.  In that post, I provided the steps necessary to mitigate the risks associated with the exploit.  If you have not yet taken the steps listed in that posting, please be sure to take those steps immediately.  This posting is geared towards the proper auditing, review, and resolution of any issues that might be present on a compromised site.  Please note, even if you do not believe you were compromised PLEASE review the first section of this post to be sure.
May 11, 2016

Update to DNN/Evoq Url Redirect Provider for Multi-Portal Installations

One often overlooked free utility for DNN/Evoq are the open-source DNN Extension Url Providers. These providers are there to help with social URL's and URL redirects. The URL Redirect provider is a must-have solution for those migrating from other platforms into DNN as it provides a method to easily add complex URL redirects into your system for old URLS. Even for those that are working under the Evoq URL provider. I was made an administrator of this particular product more than 2 years ago, however, we haven't had much of a need to add features until today.
April 05, 2016

When Memory Caching Doesn't Mean Memory

For a number of years I have been providing guidance on how to get the best performance from DNN. One of my key recommendations is to change the caching mode to "Memory" from the default setting of "File." The setting change itself is quick and harmless, simply change the value in Host Settings are you are done. Well, come to find out it isn't exactly that easy.
December 30, 2015

DNN/Evoq Scheduler: Setting Expectations

One of the fundamental features of the DNN/Evoq platform is the the internal "Scheduler" system.  Creating a Scheduled Job is an easy process, and something I have blogged about in the past.  However, I have been seeing more questions recently around what exactly is meant by the "5 Minute" Interval or other settings regarding the scheduler jobs.  The root cause is the differences in expectations versus what is possible.
November 20, 2015

Check Your DNN Configuration for Performance!

More than six years ago I created the first version of my  DNN Performance Best Practices guide.  This guide has been downloaded by thousands of people looking to get the best performance out of their DNN installations.  The guide has been the training tool I've used for new members of my staff, and it serves as the baseline for any new DNN installation that we work with.  However, in this post I want to draw attention to what has recently become a silent killer with regards to DNN performance.  

September 23, 2015

Fixing Failing DNN Scheduler DNN 7.3.x Issues

In the past few months I have had to work with various issues with DNN/Evoq sites not executing scheduler jobs.  A number of various blog posts as well as forum posts have been started on the issue, and all point to a similar issue with regards to case-sensitivity with the scheduler and the web server name.  I had a recent situation though where I had fixed all of the issues outlined but was still seeing an error.

September 08, 2015

Avoiding Issues with DNN EncryptParameter

Working with DNN extension development we often need to share information from page-to-page or other locations within our application and we want to do so in a secure manner.  For the longest time DNN has contained a handy set of methods in the UrlUtils namespace, EncryptParameter and DecryptParameter.  They are easy to use, but just recently I have uncovered a very unusual situation that resulted in an error.  Funnily enough, this code has been running in production for more than 5 years!

November 17, 2014

Keeping Your DNN Website Clean: The Web.config

In the past 6 months I have been working on a large number of migrations from older versions of DNN to newer.  This blog post is going to be a first post in a series of posts around various activities that site administrators can do that will make future site administration easier.   Over time websites will have modules installed, modules removed, upgrades performed and other activities that can often leave lasting marks that only add confusion to things in the future.  Lets look at one area that can/should be cleaned on a regular basis and that is your web.config.
October 08, 2014

Performance Testing Success Story: An Active Third-Party Vendor

I often talk about the importance of having well performing applications.  The reasons for my focus on performance are vast and range from the user experience, ability to handle load, Search Engine Optimization (SEO), and everything in between.  One of the most common issues that I will encounter with client sites when optimizing is that the root of their performance problem might reside with a third-party component that they have used.  Sometimes this was a component they selected, other times it was a component another consultant recommended, and even other times it was an item that was part of the framework that they were using and they did not have a choice.

This post is dedicated to a "happy story" with regards to performance optimization and experiences with third-party vendors.

August 01, 2014

DNN Spam Registrations & You!

Recently there has been a lot of discussion in the community around DNN Spam registrations and methods and processes to prevent or fix the issues that are associated with them.  I've been debating on if/when I should actually write about this given that there is an Official DNN Software response on the issue, as well as many other community comments.  Well, tonight, while on vacation I had a server go down and guess what it was because of this very issue so I think its time to give my quick perspective and recommended action points for those of you that are running a DNN site.  These recommendations apply for ALL DNN versions!
July 06, 2014

Module Performance; Set Yourself Apart

With a plethora of modules on the market today, it is often hard for users to select the "right one" for their solution. Help yourself, and help your customers by setting your modules apart in one of the most important ways, performance. Not all DNN sites are large, not all DNN sites are small, that's the beauty of the platform. However, many modules & vendors ignore this major difference. Lets look as some simple tips & tricks to help us set our modules apart.

May 29, 2014

Improving Web Application Performance - Part Two Users & Environment

Now that we have a set of metrics to use to validate the performance of our web application we can now start to dive deeply into resolving issues.  The first step in this journey is actually a step often overlooked by those that I encounter.  Professionally speaking 3 in 5 performance consultations that I am involved with are actually resolved by taking the points in this post into consideration.  So lets get started looking at users & environment.
May 27, 2014

Improving Web Application Performance - Part One Metrics!

For the last four or five years I have given a number of presentations on improving the performance of web applications, sometimes specifically focusing on DNN other times taking more broadly on ASP.NET.  However, the most popular of all presentations that I have given on Web Application performance was a session that took a broad look at application performance not only from a server side but also a client side application.  This talk was actually tailored to users that came from many application development backgrounds.  In this blog series I will share the information that was contained in that talk as well as a few more items of consideration that I have learned along the way.
May 26, 2014

DNN Performance: Understanding ModuleCache and PageOutputCache

Over the past 4-5 months my company IowaComputerGurus has help to optimize the performance of more than 50 different DNN based websites.  This is a major uptick in performance related inquiries as compare to past years which is to be expected as website owners become more-and-more concerned about the performance of their applications. In the current era it is important for websites to be fast not only for the user experience, but also for placement within the Search Engines.  The faster the internet connections we get the more impatient our users are when it comes to waiting for our sites to load.  Depending on who you talk to you will see metrics that show page load times of anything greater than 3 seconds can lead to lost customers & revenue for your website.  What exact e"metric you are looking to meet is up to you, but regardless a DNN based site can still easily render in sub-second times with proper configuration & maintenance.  In this post we will look into two of the most commonly overlooked configuration elements for performance the ModuleCache and PageOutputCache.
April 11, 2014

Avoiding Performance Issues with Multi-Portal DNN

In the first 3 months of 2014 I have encountered multiple multi-portal DNN installations that have been suffering from severe performance issues.  In most cases these users had already followed the whitepaper recommendations that I have had published since early 2007 and the sites were still slowing to a crawl at best.  Digging in, each time I found that a single fundamental issue was the root cause, with a few other secondary considerations.  Given the popularity of DNN continuing to grow and the relative ease of Multi-portal configurations I though it would be important to share.
January 17, 2014

DNN's Display on All Pages an Alternative to Avoid Nightmares

One of the age old pieces of functionality within DNN is the ability to check that magical little box "Display on All Pages." This single action might seem like the best thing since sliced bread the first time you use it, and even for days after.  But fast forward a bit and get to a year or two down the road and you might be paying the price for this little "efficiency" in ways that you might not have though about.  In this post we will take a look at the goal, the good, the bad, and the alternatives to this long standing DNN feature.
September 29, 2013

Enterprise Extension Development with DotNetNuke Part Three

This post is a continuation of my ongoing Enterprise Extension Development blog series talking about how to effectively leverage DotNetNuke in complex environments. In Part One we set the stage for why it is important to look at Enterprise Development slightly differently. In part two we started on the slight differences to basic project structures needed to ensure that we can "Compile Anywhere" and move our projects quickly between machines etc. In this part of the series we will take a look at your code structures within, to handle interdependencies etc successfully.

July 25, 2013

Enterprise Extension Development with DNN Part Two

A few weeks ago I set the stage for this series of posts with my Enterprise Extension Development with DotNetNuke Part One post.  This article, the next in the series, ended up getting delayed a bit.  As many of you know there has been a lot changing within the DotNetNuke world, as all of this unfolded my priorities were pulled from these posts to other areas of concern.  Now, I'm back on these posts and want to make sure to dive into this in detail.  In the first post of the series I covered the high-level details.  The reasoning behind this series, and the main goals that I hope to accomplish by putting this information out there.  This post is dedicated to the development environment, and development structure for our projects.
June 15, 2013

Enterprise Extension Development With DotNetNuke Part One

Earlier this year I spoke at the Southern Fried DotNetNuke event and one of the most popular of my talks was "Developing Enterprise Solutions with DotNetNuke."  Now that we have one of the final hurdles cleared from an implementation perspective in this post, and future ones I will start to share all of the details that I have been promising.   This post will serve as a launch point for the future parts, as of this point in time I believe this will span 8-10 posts to give everything the proper coverage necessary.  As the series grows I will update this post with links to the future sections.  So lets get to it!
June 13, 2013

Official DotNetNuke NuGet Packages.

Many of you have been asking me about my promised Enterprise DotNetNuke Development blog postings that I have been promising since the Southern Fried DotNetNuke event earlier this year.  I have been working on them, but one of the key pieces for me was to figure out how to get NuGet packages to the greater population as I was working locally with a private NuGet Server for my own purposes.  I'm happy to be able to note that today DotNetNuke corporation released official NuGet packages to the nuget.org repository and they are freely available for users as of today.  In this posting I'll run through the different packages that are available, when you would want to use them, and what versions are available as of this posting.  
May 19, 2013

DotNetNuke Form Patterns and You! 6.x or 7.x?

As a developer of hundreds of custom DotNetNuke extensions I have to say one of my favorite enhancements to the DotNetNuke platform over the last few years was the inclusion of the new DotNetNuke Form Pattern that was part of the 6.x release.  By incorporating a consistent design pattern it became trivial for extension developers to build modules that had similar UI patterns and would thus have consistently styled applications.  By doing this it is possible to make the understanding of flow within your applications easier as you are leverage a UI style that more similarly matches that of the platform itself.  However, as with any new feature it hasn't came without a few "bumps" in the road.  There were a few changes between 6.x and 7.x that have caused a bit of a problem for those of us that have already adopted the patterns, or those that might.  In this post we will look at these differences and the one small change that you can make for a seamless experience regardless of if you are targeting 6.x or 7.x!
April 19, 2013

Southern Fried DNN 2013 Presentation Materials

Last week I was a trainer and a speaker at the Southern Fried DotNetNuke event that was held in Charlotte, NC.  This event was fantastic with a day of optional training on Friday and a series of sessions on Saturday in the format of a regular Code Camp event.  As I promised the attendees of my sessions I would be posting information and assets from these presentations here on this blog.  This posting is an overall aggregate with information on the two sessions and trainings, future blog postings will expand on the information contained within.
March 04, 2013

Simplifying DotNetNuke Module MSBuild Packaging With Auto Set Package Name

DotNetNuke module development became a lot easier when it became easy to use MSBuild to simply build your project and get a nice install-able module package in the end.  I've been using this process for a number of years now, but there have always been those little things with the default templates that many have been distributing that just don't meet my needs 100%.  For example a few years back I blogged about a fix for Auto Packaging Multiple Modules.  This post shows a fix for one of my other biggest pet-peeves when it comes to the auto-package process and that comes from the determination of the 'PackageName' that is used to name the destination file.
February 01, 2013

Getting Started with DotNetNuke 7.0 Presentation Materials

So I've been promising for years to publish presentation materials after each of my events.  I've been working on so many different ways to handle this, and finally have came up with an easy way to share materials from my events. Thanks to SkyDrive, I can now easily embed the content while doing as much as I can to keep ownership of the content, so here is the first one! I'll be posting a bunch of others as well soon, all will be tagged under "Presentations". 

February 01, 2013

Using the DotNetNuke Extension Verification Service

As a person that has either directly written or managed the creation of over 400 custom DotNetNuke extensions in the past few years, the DotNetNuke package process is still the one item that I will at times overlook.  Well, recently DotNetNuke released a utility to help those of us looking to ensure that our extensions meet all of the proper requirements for consistent installation.  

January 20, 2013

Controlling DotNetNuke Static Logs

In the past I have blogged about various DotNetNuke performance and management issues, focusing on how to keep the Site Log, Event Log, and other database related functions in place. In this post, I'm going to take a look at a few other aspects, not all 100% DotNetNuke based, that should be closely monitored and addressed as well. For those of you that follow me on Twitter, my recent posting about clearing almost 40Gb of rogue data across servers is all part of what lead me to this posting.

November 03, 2012

Using DotNetNuke Caching in Custom Modules

One of the biggest concerns for developers these days is how to increase the performance of delivered applications. User expectations have changed over the past few years and the expectations are very, very high in regards to page load times and how quickly information should be returned to the users. Thankfully, as part of DotNetNuke there are a number of different features that can help applications work quickly. Some of these features are known by everyone, things such as the DotNetNuke performance settings under "Host Settings", Cache Time settings on a module by module basis, and if on Professional Edition the built in page Output Cache Provider. However, one often overlooked API that is helpful for developers is the DataCache API. In this post I'll do a deep dive into why this API is so helpful and some scenarios where leveraging this API it can reduce page load times and system resources needed for each page request.

October 30, 2012

DotNetNuke World Review and MVP

So first of all, I'll admit I'm a bit late to the game here getting this post put together, as DotNetNuke World was almost three weeks ago.  Sadly combined with two major site launches, some travel and other things the blog just hasn't gotten the attention that it deserved.  But better late than never I thought so here it goes!
September 24, 2012

Creating Custom DotNetNuke Module Categories

As part of one of the recent overhauls of the DotNetNuke interface the control panel was updated to include a "Category" selection that allows modules to be grouped logically into categories.  Out of the box a total of two categories are created "Admin" and "Common" with only the Text/HTML module included in the "Common" category.  In this posting I'll take a deeper look into this functionality and how you can create your own categories, and how to move modules around between categories to make administration even easier!
July 06, 2012

Creating Simple Re-Usable Confirmations in DotNetNuke Skins

As part of the IowaComputerGurus site redesign that I just launched earlier this evening I was looking for a simple "no hassle" way to add a confirmation to a link before downloading. Historically I created a module to manage this and the module managed those links. However, I wanted to find something more flexible so that I can put my download links wherever I want, in any Text/HTML module, on any section of the site. Amazingly I was able to do this with two lines of JavaScript in my skin file!

July 05, 2012

Security Exceptions After Moving .NET 2.0 DNN Site?

Over the past few weeks it seems that I have been doing more DotNetNuke site shuffles than I have in a long time.  From local -> production, from hosting provider a -> hosting provider b, and any combination therein.  This process is practically second nature for me as I've done it so many times.  However I had two sties that proved to be really troublesome so I though I'd share the root causes here in hopes that it might help someone!
June 26, 2012

Taking Control of the DotNetNuke WYSIWYG Editor

DotNetNuke by default uses the Telerik RadEditor as the rich text editor. It is a truly amazing product and one of the better WYSIWYG editors. Just like any editor though it does have some mannerisms that are not so welcomed by users. A little known fact within DotNetNuke is that you have a number of configuration elements available to help not only make the editor easier to use by removing un-needed items, but you can drastically improve functionality for super-users if so inclined and prevent issues when staging content etc. In this post I'll dive into a few of the key configuration items that I make to all new sites.

June 23, 2012

Using radCaptcha Via DotNetNuke Wrappers

When putting a form that is public facing we often need to add a captcha to help prevent bots from submitting our forms.  Historically there has been a control available within DotNetNuke that worked for this, but admittedly it didn't have the best customization nor was it the most "pretty" of them out there.  Ever since DotNetNuke has had the Telerik Controls a new option has been available yet its usage isn't the most widely documented.  In this post I'll show you how to use RadCaptcha in your own custom modules.
June 15, 2012

Windows Azure 90 Day Free Trial - Buyer Beware!

This is just a quick public service announcement for those that might be looking at trying the new Windows Azure service for hosting a DotNetNuke site.  I have been working with a few people that have been wanting to try it out and overall the experience has been pretty good as the DNN install was successful and performed quite well.  However, the reason for this post is a warning to those of you that are working within the "free trial" period.
May 07, 2012

Development and Test DotNetNuke Installations and Search Engines

It is quite often that when working on a new version of a site that you will have a development, test, upgrade copy of the site that might be around for a while.  It is also possible that if you are working for a third-party that you might stage client sites on your server for a period of time before go-live.  At first glance this all seems common place and not something that you would be concerned about.  However, that is not the case.  Search engines have become overly aggressive in indexing sites, including those that have no direct back links but have been e-mailed to individuals or similar processes. In this post I'll discuss some important considerations when working with these "non-production" installations to help you ensure that search engines will NOT index the content and cause confusion.
May 04, 2012

DotNetNuke Login and Auto Complete - How to Cope

Recently I have been getting a lot of questions regarding the DotNetNuke login and why when you go to login that "auto complete" is disabled on the username/password fields.  The typical follow-up question to that is "how can I change that behavior".  So after answering this question individually around 5-6 times I though it would be best to get this out here, at least my opinion on the issue.
January 19, 2012

Improve Performance with Static File Caching

This post will be the first of what will be many posts with regards to application performance. After giving a number of presentations over the last 1-2 years, including one this evening in the Minneapolis/St. Paul area I've decided that some of these tips/tricks that I have with regards to improving application performance should really get put out here so people can find them and make the improvements to their applications. Going forward all of these posts will be categorized with at least the "Performance" category and then others that identify what systems are benefited by the changes. The subject of this post is Static Content Caching.

December 19, 2011

Getting Up to Speed on DNN 6.x Design

So like many developers I have been spending some time recently updating my client, commercial, and open-source modules to support the new DotNetNuke 6 Form Pattern from a design perspective, to make my modules better integrate into the system.  Looking around when I was starting there is very little "true" documentation on this concept, and for me it was a bit cumbersome pulling everything together.  I started with this Wiki Article and then ended up spending a lot of time digging/inspecting lots of other modules that had been upgraded.  So in this post, I'm going to take a bit more of a 'code-centric" no-nonsense approach to what your form should really look like, I hope that this helps you.

November 18, 2011

Understanding and Mitigating DotNetNuke Upgrade Risks

With all of the recent changes that have come to the DotNetNuke product in the past few years I have been seeing more and more situations where users have older installations that want to get to DNN 6.x to take advantage of the new features that are available with the latest version.  I can't say as I blame them the newest features are great and a true benefit to all that use them, however, the road to getting there isn't always as peachy as it might seem, as you often find people with upgrades that fail horribly.  This has been a common trend and some of the things that DotNetNuke Corporation has done really makes this process less error prone, but a bit portion of the "getting it right" upgrade process really falls in the hands of the site administrators that are going to be doing the upgrades.  That is the focus on this blog post, how can we as site administrators identify potential risks and then mitigate/resolve the issues on our own?

November 13, 2011

DotNetNuke World 2011 Recap

As most of you know I was at the DotNetNuke World 2011 event in Orlando Florida this past week, and I thought I would give a quick recap of my experience with the event and share how much different I felt this event was in comparison to the previous DotNetNuke Connections events.  To help try and give proper justice to the topic, I'm going to break my review out in a few different categories to help make it a bit more understandable, and without further delay, here we go!

November 02, 2011

DotNetNuke 6.1.x Release and Warning!

As I'm sure that you have seen in the last day or so DotNetNuke 6.1.0 was released.  Overall, this release is a major improvement for DotNetNuke with enhancements to performance, support for mobile devices and other general upgrades.  However, I've already been alerted to a major, slightly hidden change that I wanted to be sure to put out here as a warning.

October 31, 2011

DotNetNuke World and Blog Updates

It seems that the past few months have just flown by and I haven't gotten as much time to blog here as I have wanted.  I hope to start changing that here in the next few weeks as I have a large number of items that I'm looking to get out here, just trying to find the time to get it done.  But with DotNetNuke world just a little over a week away I wanted to post a quick note here about the event.

 

September 07, 2011

Canonical Portal Alias Woes DNN 5.6.2

One of the additions to DotNetNuke 5.x (not sure when/where) was the ability for DotNetNuke to provide a Canonical URL in the meta information for your page.  When this all works well, things are going perfectly.  You can configure the site to use the Canonical URL via the "Admin Settings" page and normally all works well, but I had a very "interesting" issue with a site recently and I thought I'd share in case anyone else had a similar issue.

Content provided in this blog is provided "AS-IS" and the information should be used at your own discretion.  The thoughts and opinions expressed are the personal thoughts of Mitchel Sellers and do not reflect the opinions of his employer.

Content Copyright

Content in this blog is copyright protected.  Re-publishing on other websites is allowed as long as proper credit and backlink to the article is provided.  Any other re-publishing or distribution of this content is prohibited without written permission from Mitchel Sellers.