DNN Login Module – Advanced

We have released a new module  (following hot on the heals of DNN Tell A Friend Update) for managing the loggin into a Dot Net Nuke website. The module is the DNN Login Module – Advanced (Advanced Login) and we are please to announce that this module is to be available on our site from later today.

Some of the key features include the ability to login to a DotNetNuke website without using the User Name. In place you can use an email address or other custom profile information to allow or deny access to users.

See more on our DotNetNuke Moudle Site

DNN Bulk Email Solutions

We have release an update to our DNN Email Solution.

Bulk Emailer – Advanced DNN Email

Bulk Emailer is the most advanced fully featured email manager module for DotNetNuke.

Use Bulk Emailer to deliver rich personalised and dynamic content to DNN users, custom lists, and integrated CRM contacts.

Establish advanced auto responding campaigns, with automatic follow up email messages to people who click a link in a previous email.

Provide Opt-in with previous email message catch-up running at a spaced interval, allowing you to provide a consistent communication service to your customers or members.

Bulk Emailer is packed full of features that make it the clear leader in the DNN Email Marketing Modules.

DotNetNuke (DNN) Analytics Report Module

Google Analytics Report Module allows you to display your Google Analytics Graphs in a custom module on your DNN website.

This allows you to use the Google Analytics free service with your clients websites, and deliver the results directly to the client without them leaving the DNN platform. This effectively replaces the DNN site log data with a neat flash colour grap of the Analytics Report data.

 More Details at: http://www.dnn-module.net/analyticsreport

Silverlight 3.0 OOB doesn’t auto update in my DotNetNuke Module

While developing Silverlight Video Library our next up coming DotNetNuke Module, the out of browser (OOB) experience Silverlight 3.0 brings is very compelling. But we ran in to a snag when testing the auto updating feature.

Turns out this auto updating feature isn’t so auto coming from beta to RTM. After some hunting around the new classes available in the framework the following thrown in your App.config.cs will ensure in its simplest way your OOB app will be auto updated.

private void Application_Startup(object sender, StartupEventArgs e)

{

// check for new version if OOB

if (Application.Current.IsRunningOutOfBrowser)

{

Application.Current.CheckAndDownloadUpdateAsync();

}

}

private void Application_Startup(object sender, StartupEventArgs e)
{

DotNetNuke DNN Exception Details: System.Web.HttpException: Server cannot modify cookies after HTTP headers have been sent.

We had a client with this error in their DotNetNuke Website:

Server Error in ‘/’ Application.
——————————————————————————–

Server cannot modify cookies after HTTP headers have been sent.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Server cannot modify cookies after HTTP headers have been sent.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace:
[HttpException (0x80004005): Server cannot modify cookies after HTTP headers have been sent.]
   System.Web.HttpResponse.BeforeCookieCollectionChange() +8710212
   System.Web.HttpCookieCollection.Add(HttpCookie cookie) +24
   System.Web.Security.AnonymousIdentificationModule.OnEnter(Object source, EventArgs eventArgs) +1792
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

For DNN the problem turned out to be in the Event Log Purge Schedule.

Under Host Settings, login and locate the history of the scheduled item. Check to see if the history shows a fail and shows this errir.

DotNetNuke.Services.Log.EventLog.PurgeLogBuffer, DOTNETNUKE
EXCEPTION: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: Index at Microsoft.VisualBasic.Collection.FastList.get_Item(Int32 Index) at Microsoft.VisualBasic.Collection.get_Item(Int32 Index) at DotNetNuke.Services.Log.EventLog.DBLoggingProvider.DBLoggingProvider.PurgeLogBuffer() at DotNetNuke.Services.Log.EventLog.PurgeLogBuffer.DoWork()

. If it does then apply this.

Turn off this item but untickign the Yes option.

Then go to the HOST / Settings Page and restart the application.

Return to the schedule and re-enable the purge log buffer with it set to perform every 3 min. Check that the schedule process finishes.

DotNetNuke.Services.Exceptions.PageLoadException: Value cannot be null.

PageLoadException errors in the DNN Site Log, and problems with users selecting profile data options in the DotNetNuke profile date area caused many page load exceptions. The solution is as simple as changing the Host Settings / Performance Settings.

We experienced some problems with a DotNetNuke Site to do with the Page Load Exception.

Message: DotNetNuke.Services.Exceptions.PageLoadException: Value cannot be null. Parameter name: String —> System.ArgumentNullException: Value cannot be null. Parameter name: String at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) at System.Web.Configuration.HttpCapabilitiesBase.get_MajorVersion() at DotNetNuke.UI.Utilities.ClientAPI.BrowserSupportsFunctionality(ClientFunctionality eFunctionality) at Dnnskin.Net.SkinObjects.V2.HorizontalTheme.Page_Load(Object sender, EventArgs e) at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) — End of inner exception stack trace —
and

Message: DotNetNuke.Services.Exceptions.PageLoadException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index —> System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index at System.Collections.ArrayList.get_Item(Int32 index) at DotNetNuke.Modules.Forum.Posts.RenderThread(HtmlTextWriter wr) at DotNetNuke.Modules.Forum.Posts.Render(HtmlTextWriter wr) at DotNetNuke.Modules.Forum.ForumBaseControl.Render(HtmlTextWriter wr) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at ASP.desktopmodules_forum_forum_container_ascx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at System.Web.UI.Control.Render(HtmlTextWriter writer) at DotNetNuke.Entities.Modules.PortalModuleBase.Render(HtmlTextWriter output) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer) at System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at System.Web.UI.Control.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at ASP.portals__default_skins_vista_black_grayback_mediumwidth_ascx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at System.Web.UI.Control.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at System.Web.UI.Control.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) at System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at ASP.default_aspx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at System.Web.UI.Page.Render(HtmlTextWriter writer) at DotNetNuke.Framework.PageBase.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) — End of inner exception stack trace —

Basically all these errors are assoicated with page load exceptions.

The root cause of these errors, and there were many happening with the site, was to do with the host settings / performance settings.

The Page State Persistence had been set to Memory. This is a bad idea in DNN website. We changed the setting back to “Page” and actually rebooted the server. This ensured things were all tidy and working again.

Unlock other user’s checked out files in TFS

Don’t you hate it? A developer is away on holiday the exact time you need to update some code in TFS only to find it checked out and locked by them. The other day while working on our unreleased DotNetNuke Module Easy Events – Event Calendar (example running here) this happened.

Open up a Visual Studio command prompt and run the following (replacing items with your details):

tf undo “$/PROJECTNAME/FOLDER/FILE.EXTENSION” /WORKSPACE:MYDEVBOXNAME;Domain\User /server:SERVERNAME /recursive