Friday, December 16, 2011

PayFlowPro Error: User authentication failed.

Version: AspDotNetStorefront


Using the PayFlowPro payment type, ASPDNSF returns error “User authentication failed” after entering payment details.


The most common cause for this error is either invalid credentials (see below) or IP address restrictions.  Note that both the store ip address “and” the server IP address must be in PayPal’s allowed IP address list.

Possible Causes (as per PayFlowPro documentation):

User authentication failed error is caused by one or more of the following:

(1) Login information is incorrect. Verify that USER, VENDOR, PARTNER, and PASSWORD have been entered correctly. VENDOR is your merchant ID and USER is the same as VENDOR unless you created a Payflow Pro user. All fields are case sensitive.
NOTE: You can't have special characters like #, !, etc. in your password for verisign.

(2) "Allowed IP Address" security feature implemented. The transaction is coming from an unknown IP address. See PayPal Manager online help for details on how to use Manager to update the allowed IP addresses.

(3) Invalid Processor information entered. Contact merchant bank to verify.

(4) You are using a test (not active) account to submit a transaction to the live PayPal servers. Change the host address from the test server URL to the live server URL.

Thursday, September 29, 2011

Magento: There has been an error processing your request

Version: Magento 1.5+


By default, Magento does not show detailed error messages and shows an error log number only.  For example,

Magento Commerce
There has been an error processing your request
Exception printing is disabled by default for security reasons.
Error log record number: 1816309327
Magento is a trademark of Magento Inc. Copyright © 2010 Magento Inc.


Magento does not show verbose error messages by default for security reasons.

Full error details can be found in the /var/report/ directory.  Look for a filename that matches the error log record number in the error summary.

To enable verbose errors, rename the following file: /errors/local.xml.sample –> /errors/local.xml

Magento: Change Database Connection Credentials

Version: Magento 1.x


Change database connection credentials to point to new database.


Modify the connection section in: app/etc/local.xml

Sunday, September 4, 2011

Mangento: Create a New Structural Block Using Local.xml

Version: Magento 1.x

Create a new structural block without making changes to default theme layout files e.g. page.xml.

Add the following to local.XML to create a new structural block with name “newblock”.

<layout version="0.1.0">
        <reference name="root">
            <block type="core/text_list" name="after_head_start"/>

Add content blocks as normal and render the structural block (as standard) in .phtml files e.g.
<?php echo $this->getChildHtml('newblock') ?>

Saturday, September 3, 2011

Magento: Use PIE for IE6-8 CSS3 Decoration Features

Version: Magento 1.x
Make IE6-8 recognize useful CSS3 decoration features. e.g. rounded corners.
Install third party solution PIE as follows:
  1. Download latest PIE version:
  2. Copy to /skin/frontend/yourdesignpackage/yourtheme/css/ (in fact your can copy it to any location you like).
When specifying CSS3 styles in your stylesheet – include the behavior property with the full url to the .htc file.  For example:
.rounded-corner {
    border: 5px solid #d8d7cd;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    border-radius: 3px;
    behavior: url(/skin/frontend/yourdesignpackage/yourtheme/css/;

Wednesday, August 31, 2011

Magento: WYSIWYG Editor Wraps Content in P Tags

Version: Magento 1.x


The WYSIWYG editor wraps content in p tags even when switching to html view and manually deleting them.

Hack Fix:

Change the p tags to div tags in html view.

Friday, July 15, 2011

Mobile Devices Display Generic ASPDNSF Store Instead of the Actual Website

Version: ASPDotNetStorefront 9.x

When browsing the site with a mobile or table device the default generic mobile skin is being displayed.

To disable the mobile skin and display the standard website skin, delete all rows in the MobileDevice table.

Thursday, July 14, 2011

Magento: Change Base URL via Database

Version: Magento 1.x

Changing the base url in Magento admin (System –> Configuration –> Web –> Base URL) causes an error and the front-end and back-end no longer display.

In table, core_config_data update rows:
web/unsecure/base_url = your new domain
web/secure/base_url = your new domain

Clear cache by deleting all files in the folder: /var/cache/

Friday, June 10, 2011

ASPDNSF: Invalid web.config Error–There Is a Duplicate Section Defined

Version: ASPDotNetStorefront 9.x
The following error is generated when trying to view the store website:
Server ErrorInternet Information Services 7.5
Error Summary
HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid. Detailed Error Information
Module IIS Web Core
Notification Unknown
Handler Not yet determined
Error Code 0x800700b7
Config Error There is a duplicate 'system.web.extensions/scripting/scriptResourceHandler' section defined 
Config File xxx\web.config

AspDotNetStorefront is typically run under the DefaultAppPool.  In IIS, right click on the DefaultAppPool and choose Advanced Settings.  Ensure the .NET Framework Version = 2.

Thursday, May 19, 2011

ASPDNSF + QuickBooks Gateway + Zip 5-4 = Error

Version: AspDotNetStorefront


Billing addresses with zip 5-4 e.g. 90019-5929 causes the QuickBooks gateway to error with the following message: The string X in the field CreditCardPostalCode is too long. The maximum length is 9.


In file: \ASPDNSFGateways\QBMerchantServices.cs make the following modification:

//mod start Aydus 5/09/2011: Strip any non-numeric characters from zip. e.g. dash when address validation turned on.
System.Text.RegularExpressions.Regex nonNumericCharacters = new System.Text.RegularExpressions.Regex(@"[^0-9]");
creditCard.BillingPostalCode = nonNumericCharacters.Replace(UseBillingAddress.Zip, String.Empty);
//creditCard.BillingPostalCode = UseBillingAddress.Zip;
//mod end

Tuesday, May 17, 2011

How to Get ASPDotNetStorefront Store URL

Version: AspDotNetStorefront 8.x


How do I get the current store url?


There are a number of variables available.
In an XMLPackage use the following: <xsl:value-of select= “/root/System/StoreUrl” />
In .NET call the following function AppLogic.GetStoreHTTPLocation or AppLogic.GetStoreDomain

Tuesday, February 22, 2011

Running WordPress as Sub Domain of AspDotNetStorefront Edit Image Error

Version: ASPDotNetStorefront 9.x ML & MS

WordPress generates an error when trying to edit an existing image in a blog.

AspDotNetStorefront is the primary site. WordPress is a subdomain of the primary site e.g.  WordPress is installed on the same server.  Server is Windows 2008R2 with IIS 7.5.

By default, a subdomain will inherit it’s parent web.config settings.  It’s not possible to use the <location path="." inheritInChildApplications="false"> tag since this will prevent all subdomains from inheriting the parent web.config and this will break admin.

Instead, include the following settings in your WordPress web.config.  Be sure to preserve any existing WordPress web.config settings and simply add the settings below.

            <remove name="RegisterRoutes" />
            <remove name="ScriptModule" />
            <remove name="UrlRoutingModule" />
            <remove name="OnErrorHandler" />
            <remove verb ="*" path="execpackage.aspx" />
            <remove name="RegisterRoutes" />
            <remove name="ScriptModule" />
            <remove name="UrlRoutingModule" />
            <remove name="HtmlPages" />

Friday, February 4, 2011

AspDotNetStorefront Monthly Maintenance Time-Out Error

Version: AspDotNetStorefront (including multi-store and SP1)


When running monthly maintenance a timeout error is generated.


Run the monthly maintenance SQL directly on the database.  Important: only attempt this if you have a full backup of your database and have inspected each and every SQL parameter below and understand the full implications of running this stored procedure.  This is meant as a technical reference for developers and database administrators only.

aspdnsf_MonthlyMaintenance @InvalidateCustomerCookies=0, @PurgeAnonCustomers=1, @CleanShoppingCartsOlderThan=0, @CleanWishListsOlderThan=0, @CleanGiftRegistriesOlderThan=0, @EraseCCFromAddresses=1, @EraseSQLLogOlderThan=30, @ClearProductViewsOrderThan=180, @EraseCCFromOrdersOlderThan=30, @DefragIndexes=1, @PurgeDeletedRecords=0

In version 9.x, the monthly maintenance admin routine will also “Clear Profiles Older Than”.  This is a separate SQL statement not included in the stored procedure above.  The Profile table can grow large quickly and old data must be removed.  e.g. delete profile table rows > 30 days old:

delete from Profile where UpdatedOn < dateadd(d, -30, getdate())

Wednesday, January 19, 2011

Using Current.Response in Custom Class



When using Current.Response in a custom ASP.NET class there are compiler errors e.g.

The name 'HttpContext' does not exist in the current context

The type or namespace name 'HttpContext' does not exist in the namespace 'System.Web' (are you missing an assembly reference?


  1. Add System.Web as a reference to the class.  Right click the class in the Solution Explorer and choose Add Reference. On the .NET tab select System.Web.
  2. Insert the following at the top of the class: using System.Web;

Tuesday, January 18, 2011

AspDotNetStorefront WSI Setup for eBridge

AspDotNetStorefront Version: ML


eBridge requires WSI to be setup in ASPDNSF for download/upload of information.


Setup WSI according to the installation instructions located here:  Instructions also included at the end of this blog.

Note that there is an issue with ASPDNSF that results in the following error when eBridge tries to connect:
System.Web.Services.Protocols.SoapHeaderException: Server unavailable, please try later ---> System.ApplicationException: WSE842: The service pipeline could not be created. ---> System.Configuration.ConfigurationErrorsException: WSE032: There was an error loading the microsoft.web.services3 configuration section. ---> System.Configuration.ConfigurationErrorsException: WSE040: Type AspDotNetStorefront.ASPDNSFUsernameTokenManager could not be loaded. Please check the configuration file.

To fix this issue following the instructions here:
i.e. Find the '#if WSE3' line in the App_Code\ASPDNSFUsernameTokenManager.cs file and add the following line immediately above it: #define WSE3

Setup a customer with admin access that eBridge will use to connect.

Test the WSI by navigating to and manually invoke the DoItUserNamePwd method using the eBridge email/password (created in the last step) for AuthenticationEMail/AuthenticationPassword and the XmlInputRequestString below.  If everthing is setup correctly you will get a page of data containing new orders.

<AspDotNetStorefrontImport Verbose="false">
  <Get Table="Orders" Name="NewOrders">
    <OrderBy>OrderNumber asc</OrderBy>
    <DefaultWhereClause>OrderNumber >= 100</DefaultWhereClause>

Installing WSI

  1. Ensure that the Microsoft Web Services Enhancements version 3.0 runtime is installed on the production web server and any development servers. This is extremely important, as without WSE 3.0 your site will fail. The WSE 3.0 components are available from:
  2. Copy the IPX.asmx and IPX.xml files to the root of your website
  3. Copy the App_Code/ASPDNSFUserNameTokenManager and App_Code/IPX classes to your site's App_Code directory
  4. Open the web.config file and search for "WSI". Uncomment any elements commented as required by the WSI feature.

    To test functionality, browse to If you do not receive any errors, WSI should be working. Once you are comfortable that the feature is operational you should take additional measures to secure this page, such as limiting access to an IP address or range of IP addresses (this can be done via the IIS Management Console or possibly your hosting control panel). Doing so will help to prevent malicious users from scripting attacks against the interface.