DnnAsyncUpload causes non-admin users to be logged out

Telerik

Telerik (Photo credit: martin.linkov)

When our client needed to be able to upload large files and see a progress meter for the upload I switched to the DotNetNuke wrapped Telerik RAD Controls.  These controls are well designed and easy to use.  In this case I combined the DNNAsyncUpload, DNNProgressManager, and DNNProgressArea controls. These are the DNN wrapped versions of RADAsyncUpload, RADProgressManager and RADProgressArea.

Unfortunately the documentation is a bit lacking.

In this case non-admin DotNetNuke users were being logged out after uploading a document.  The document uploaded just fine, but each time the user had to login when the upload completed and the page refreshed.

The main key to resolving this is to make sure the web.config is setup properly.  I’ll go through each element that should be in the web.config.

 

1. In the <AppSettings> block add:

<add key=”AllowCustomProgress” value=”false” />

Even though the default value is false this line needs to be in the web.config in order for the page refresh to resolve properly.

 

2. At the end of the <httpModules> block add

<add name=”RadUploadModule” type=”Telerik.Web.UI.RadUploadHttpModule, Telerik.Web.UI” />

I say add this at the end because these blocks are loaded in a hierarchical fashion.  Having it at the end ensures that no other entry will override it.  If that affects another module than you may have to look replacing a module, or possibly updating it.

 

3. At the end of the <httpHandlers> block add

<add verb=”*” path=”Telerik.RadUploadProgressHandler.ashx” type=”Telerik.Web.UI.Upload.RadUploadProgressHandler, Telerik.Web.UI” />

 

4. If you are using the iFinity.FriendlyUrl provider then add the bolded text to the provider line.  Any other settings in this entry should not affect the upload module and I only include them for clarity.

<add name=”iFinity.FriendlyUrl” type=”iFinity.DNN.Modules.FriendlyUrl.DNNFriendlyUrlProvider, iFinity.FriendlyUrlProvider” includePageName=”true” regexMatch=”[^\+a-zA-Z0-9 _-]” urlFormat=”HumanFriendly” redirectUnfriendly=”true” doNotRedirect=”SearchResults;” checkForDupUrls=”true” forceLowerCase=”false” redirectWrongCase=”false” replaceSpaceWith=”-” logCacheMessages=”false” doNotRedirectRegex=”[.]*Telerik\.RadUploadProgressHandler\.ashx[.]*” />

 

5. Between the DotNetNuke and System.Webserver blocks add this block

<location path=”Telerik.RadUploadProgressHandler.ashx”>
  <system.web>
    <authorization>
      <allow users=”*”/>
    </authorization >
  </system.web>
</location>

6. At the end of the System.Webserver <modules> block add

<add name=”RadUploadModule” type=”Telerik.Web.UI.RadUploadHttpModule, Telerik.Web.UI” preCondition=”managedHandler” />

 

7. At the end of the System.Webserver <handlers> block add

<add name=”Telerik.RadUploadProgressHandler.ashx” verb=”*” path=”Telerik.RadUploadProgressHandler.ashx” type=”Telerik.Web.UI.RadUploadProgressHandler, Telerik.Web.UI” preCondition=”integratedMode”/>

 

For more information on the RadProgressArea module visit the Telerik help pages at http://www.telerik.com/help/aspnet-ajax/upload-configuration.html

Leave a Reply