Try our conversational search powered by Generative AI!

Issue with Commerce ServiceApi Catalog import

Vote:
 

Hi,

I recently upgraded a site to update 126 (CMS 9.12.1.0, Commerce 9.22, ServiceApi 2.0.10) and at the same time enabled remote events (world.episerver.com/documentation/Items/Developers-Guide/Episerver-CMS/9/Event-management/WCF-event-management/).

Everything is working as expected - the admin/edit UI, uploading media files, updating a page on the edit server sends an update to the front end server and so forth.

Calling "simple" methods in the ServiceApi returns data as expected, but when posting a file to "/episerverapi/commerce/import/catalog" I get a log message as follows:

2016-09-06 20:46:13,632 [281] ERROR EPiServer.ServiceApi.Extensions.HttpRequestMessageExtensions: File is not uploaded, please check permission on your app data folder in episerverframework.config file. 
System.IO.IOException: Error reading MIME multipart body part. ---> System.InvalidOperationException: Unable to read the entity body in Bufferless mode. The request stream has already been buffered. 
at System.Web.Http.WebHost.HttpControllerHandler.<>c__DisplayClass13.b__10() 
at System.Web.Http.WebHost.HttpControllerHandler.LazyStreamContent.get_StreamContent()
at System.Web.Http.WebHost.HttpControllerHandler.LazyStreamContent.CreateContentReadStreamAsync()
at System.Net.Http.HttpContent.ReadAsStreamAsync() 
at System.Net.Http.HttpContentMultipartExtensions.d__0`1.MoveNext() 
--- End of inner exception stack trace --- 
at System.Net.Http.HttpContentMultipartExtensions.d__0`1.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at EPiServer.ServiceApi.Extensions.HttpRequestMessageExtensions.d__0.MoveNext() 
System.IO.IOException: Error reading MIME multipart body part. ---> System.InvalidOperationException: Unable to read the entity body in Bufferless mode. The request stream has already been buffered. 
at System.Web.Http.WebHost.HttpControllerHandler.<>c__DisplayClass13.b__10() 
at System.Web.Http.WebHost.HttpControllerHandler.LazyStreamContent.get_StreamContent()
at System.Web.Http.WebHost.HttpControllerHandler.LazyStreamContent.CreateContentReadStreamAsync()
at System.Net.Http.HttpContent.ReadAsStreamAsync() 
at System.Net.Http.HttpContentMultipartExtensions.d__0`1.MoveNext() 
--- End of inner exception stack trace --- 
at System.Net.Http.HttpContentMultipartExtensions.d__0`1.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at EPiServer.ServiceApi.Extensions.HttpRequestMessageExtensions.d__0.MoveNext()

The API itself returns an exception:

{Message:An error has occurred.,ExceptionMessage:Object reference not set to an instance of an object.,ExceptionType:System.NullReferenceException,StackTrace: at EPiServer.ServiceApi.Commerce.Controllers.Catalog.CatalogImportExportController.d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Threading.Tasks.TaskHelpersExtensions.d__3`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.AuthorizationFilterAttribute.d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.AuthorizationFilterAttribute.d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.AuthenticationFilterResult.d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__0.MoveNext()}

I've triple checked the configurations and settings on the IIS etc but the error persists.

The same setup is running in a test environment where the issue does not appear, the only difference is that the production environment is on two separate servers where as the test environment is running on one server. But the remote events is setup as per instance, so it should basically be the same thing in theory.

A list of things that have been tested:

  • Set explicit permissions on the AppData folder for the AppPool user.
  • Set full permissions for Everyone on the AppData folder.
  • Downgrade ServiceApi to previous version.
  • Compared the configuration from before the upgrade and I cannot see any changes that would affect the ServiceApi.
  • Compared the configuration between the test and production environment - no differences (except urls and keys etc).
  • Verified firewall and ports on the server.
  • Tried debugging with ServiceApiConsoleClient - I get a token but the error persist when posting a file to "episerverapi/commerce/import/catalog/".
  • Tried calling "episerverapi/commerce/catalogs/" - returns data as expected.
  • Modified maxRequestLength and maxAllowedContentLength in web.config
  • Disabled ASP.NET default trace module (glimpse not installed)

Is there anybody who has encountered this before or has any suggestions on other options to test in order to get the catalog import working?

Thanks!

#155204
Edited, Sep 12, 2016 11:21
Vote:
 

Hi,

Just want to thumb up your question - well stated on the problem and what have you tried. Very nice - keep that going.

The error message can be a bit misleading. Are you trying to upload a file which is bigger than 4MB? Did you try to adjust maxRequestLength in web.config to comply with that?

Regards,

/Q

#155206
Sep 12, 2016 11:49
Vote:
 

Thanks Quan, I try to keep my forum posts as accurate as possible.

Yes, I have adjusted the maxRequestLength as well as maxAllowedContentLength to allow the file sizes we are generally uploading - forgot to mention that.
The files I've been testing with since the issue arose are at 20kB (zipped).

#155208
Sep 12, 2016 12:00
Vote:
 

Do you have any tracing modules enabled? ASP.NET own trace module or Glimpse for example? Would it help to turn those off?

<configuration>
  <system.web>
    <trace enabled="false" />
  </system.web>
  <glimpse defaultRuntimePolicy="Off">
  </glimpse>
</configuration>
#155211
Sep 12, 2016 13:09
Vote:
 

None of them were active before, just tried to disable ASP.NET trace module but the error persists I'm afraid.

#155213
Sep 12, 2016 13:41
Vote:
 

Hi,

Would you mind posting your entire web.config here? 

#155253
Sep 13, 2016 10:22
Vote:
 

Sure thing, sensitive information has been trimmed out of course:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="workflowRuntime" type="System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    <section name="episerver" type="EPiServer.Configuration.EPiServerSection, EPiServer.Configuration, Version=7.5.394.2, Culture=neutral, PublicKeyToken=8fe83dea738b45b7" restartOnExternalChanges="true" />
    <section name="episerver.baseLibrary" allowDefinition="MachineToApplication" allowLocation="false" type="EPiServer.BaseLibrary.ConfigurationHandler,EPiServer.BaseLibrary" />
    <sectionGroup name="episerverModules" />
    <section name="episerver.shell" type="EPiServer.Shell.Configuration.EPiServerShellSection, EPiServer.Shell" />
    <section name="episerver.framework" type="EPiServer.Framework.Configuration.EPiServerFrameworkSection, EPiServer.Framework" restartOnExternalChanges="true" />
    <section name="episerver.search" type="EPiServer.Search.Configuration.SearchSection, EPiServer.ApplicationModules" />
    <section name="episerver.packaging" type="EPiServer.Packaging.Configuration.EPiServerPackagingSection, EPiServer.Packaging" />
    <section name="episerver.search.indexingservice" type="EPiServer.Search.IndexingService.Configuration.IndexingServiceSection, EPiServer.Search.IndexingService" />
    <sectionGroup name="FrameworkProviders">
      <section name="dataService" type="Mediachase.Data.Provider.DataProviderSection, Mediachase.DataProvider" />
      <section name="imageService" type="Mediachase.Commerce.Engine.Images.ImageServiceSection, Mediachase.Commerce" />
      <section name="templateService" type="Mediachase.Commerce.Engine.Template.TemplateProviderSection, Mediachase.Commerce" />
      <section name="urlService" type="Mediachase.Commerce.Engine.Navigation.UrlProviderSection, Mediachase.Commerce" />
    </sectionGroup>
    <sectionGroup name="CommerceFramework">
      <section name="Workflow" type="Mediachase.Commerce.WorkflowConfiguration,Mediachase.Commerce" />
      <section name="Application" type="Mediachase.Commerce.Core.CoreConfiguration,Mediachase.Commerce" />
      <section name="Catalog" type="Mediachase.Commerce.Catalog.CatalogConfiguration,Mediachase.Commerce" />
      <section name="Marketing" type="Mediachase.Commerce.Marketing.MarketingConfiguration,Mediachase.Commerce" />
      <section name="Orders" type="Mediachase.Commerce.Orders.OrderConfiguration,Mediachase.Commerce" />
      <section name="Security" type="Mediachase.Commerce.Security.Configuration.SecurityConfigurationSection,Mediachase.Commerce" />
      <section name="Customers" type="Mediachase.Commerce.Customers.Configuration.CustomerConfiguration,Mediachase.Commerce" />
      <section name="AssetManagement" type="Mediachase.Commerce.Assets.AssetConfiguration, Mediachase.Commerce" />
      <section name="SSL" type="Mediachase.Commerce.Website.Ssl.SecureWebPageSectionHandler, Mediachase.Commerce.Website" />
      <section name="Mediachase.Search" type="Mediachase.Search.SearchConfiguration,Mediachase.Search" />
      <section name="Customization" type="Mediachase.Commerce.Customization.Configuration.CustomizationConfiguration,Mediachase.Commerce" />
    </sectionGroup>
    <sectionGroup name="mediachase.businessFoundation.data" type="Mediachase.BusinessFoundation.Data.Configuration.MediachaseDataSectionGroup, Mediachase.BusinessFoundation.Data">
      <section name="metaClassManager" type="Mediachase.BusinessFoundation.Data.Meta.Management.Configuration.MetaClassManagerSection, Mediachase.BusinessFoundation.Data" />
      <section name="metaObject" type="Mediachase.BusinessFoundation.Data.Meta.Configuration.MetaObjectSection, Mediachase.BusinessFoundation.Data" />
      <section name="businessManager" type="Mediachase.BusinessFoundation.Data.Business.Configuration.BusinessManagerSection, Mediachase.BusinessFoundation.Data" />
    </sectionGroup>
    <sectionGroup name="Mediachase.BusinessFoundation">
      <section name="BusinessFoundationSettings" type="Mediachase.BusinessFoundation.Configuration.BusinessFoundationConfigurationSection, Mediachase.BusinessFoundation" />
    </sectionGroup>
    <sectionGroup name="mediachase.fileUploader" type="Mediachase.FileUploader.Configuration.MediachaseFileUploaderSectionGroup, Mediachase.FileUploader">
      <section name="fileUploaderContext" type="Mediachase.FileUploader.Configuration.FileUploaderContextSection, Mediachase.FileUploader" />
      <section name="tempFileStorage" type="Mediachase.FileUploader.Web.Configuration.TempFileStorageSection, Mediachase.FileUploader" />
      <section name="uploadProgress" type="Mediachase.FileUploader.Web.Configuration.UploadProgressSection, Mediachase.FileUploader" />
      <section name="fileUploadControl" type="Mediachase.FileUploader.Web.Configuration.FileUploadControlSection, Mediachase.FileUploader" />
    </sectionGroup>
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
    <section name="episerver.find" type="EPiServer.Find.Configuration, EPiServer.Find" requirePermission="false" />
    <section name="resizer" type="ImageResizer.ResizerSection" requirePermission="false" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="bvn404Handler" type="BVNetwork.NotFound.Configuration.Bvn404HandlerConfiguration, BVNetwork.EPi404" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <episerver.find serviceUrl="" defaultIndex="" />
  <episerver xmlns="http://EPiServer.Configuration.EPiServerSection">
    <applicationSettings globalErrorHandling="RemoteOnly" disableVersionDeletion="false" httpCacheability="Public" uiEditorCssPaths="~/Static/css/Editor.css" urlRebaseKind="ToRootRelative" pageUseBrowserLanguagePreferences="false" uiShowGlobalizationUserInterface="true" subscriptionHandler="EPiServer.Personalization.SubscriptionMail,EPiServer" uiMaxVersions="20" pageValidateTemplate="false" utilUrl="~/util/" uiUrl="~/Protected/UI/CMS/" />
    <linkValidator>
      <excludePatterns>
        <add regex="^\." />
        <add regex="^\/" />
        <add regex="^cel" />
        <add regex="^Documents" />
        <add regex="^file" />
        <add regex="^javascript" />
        <add regex="^outbind" />
        <add regex="^tel" />
      </excludePatterns>
    </linkValidator>
  </episerver>
  <workflowRuntime EnablePerformanceCounters="false">
    <Services>
      <add type="System.Workflow.Runtime.Hosting.DefaultWorkflowSchedulerService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" maxSimultaneousWorkflows="5" />
      <add type="System.Workflow.Runtime.Hosting.SharedConnectionWorkflowCommitWorkBatchService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      <add type="System.Workflow.Runtime.Hosting.SqlWorkflowPersistenceService, System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" UnloadOnIdle="true" />
    </Services>
  </workflowRuntime>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="modulesbin" />
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.ApplicationModules" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.12.1.0" newVersion="9.12.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Data.Cache" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.12.1.0" newVersion="9.12.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Data" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.12.1.0" newVersion="9.12.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Events" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.12.1.0" newVersion="9.12.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Framework" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.12.1.0" newVersion="9.12.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Licensing" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.12.1.0" newVersion="9.12.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Shell" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.12.1.0" newVersion="9.12.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="StructureMap" publicKeyToken="e60ad81abae3c223" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.6.4.0" newVersion="2.6.4.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.3.0.0" newVersion="3.3.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Castle.Windsor" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.65535.65535.65535" newVersion="3.3.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Configuration" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.12.1.0" newVersion="9.12.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.12.1.0" newVersion="9.12.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Enterprise" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.12.1.0" newVersion="9.12.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.ImageLibrary" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.12.1.0" newVersion="9.12.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.LinkAnalyzer" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.12.1.0" newVersion="9.12.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.UI" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.9.1.0" newVersion="9.9.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Web.WebControls" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.12.1.0" newVersion="9.12.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.XForms" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.12.1.0" newVersion="9.12.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.65535.65535.65535" newVersion="1.2.10.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Search.IndexingService" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="1.0.517.262-7.65535.65535.65535" newVersion="7.5.394.2" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Business.Commerce" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.BusinessFoundation.Data" publicKeyToken="41d2e7a615ba286c" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.BusinessFoundation" publicKeyToken="41d2e7a615ba286c" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.Commerce" publicKeyToken="6e58b501b34abce3" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.Commerce.Marketing.Validators" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.Commerce.Plugins.Payment" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.Commerce.Plugins.Shipping" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.Commerce.Website" publicKeyToken="6e58b501b34abce3" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.Commerce.Workflow.Activities" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-8.1.0.304" newVersion="8.1.0.304" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.Commerce.Workflow" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.DataProvider" publicKeyToken="41d2e7a615ba286c" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.FileUploader" publicKeyToken="41d2e7a615ba286c" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.Library.AmazonProviders" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.MetaDataPlus" publicKeyToken="41d2e7a615ba286c" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.Search" publicKeyToken="6e58b501b34abce3" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.Search.Extensions" publicKeyToken="6e58b501b34abce3" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.Search.LuceneSearchProvider" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.SqlDataProvider" publicKeyToken="41d2e7a615ba286c" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Commerce.UI" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Castle.DynamicProxy" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.1.5.0" newVersion="1.1.5.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Iesi.Collections" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.0.0.3" newVersion="1.0.0.3" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.2.0.4000" newVersion="1.2.0.4000" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="AjaxControlToolkit" publicKeyToken="28f01b0e84b6d53e" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.30930.28736" newVersion="3.0.30930.28736" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="LitS3" publicKeyToken="null" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-0.8.2.0" newVersion="0.8.2.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Mediachase.WebConsoleLib" publicKeyToken="null" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.ReportViewer.Common" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.ReportViewer.WebForms" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="nsoftware.IBizPay" publicKeyToken="cdc168f89cffe9cf" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.3575.0" newVersion="4.1.3575.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="CMS" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Cms.Shell.UI" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.9.1.0" newVersion="9.9.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Shell.UI" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.9.1.0" newVersion="9.9.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Shell" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Commerce.Shell" publicKeyToken="null" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-0.86.0.518" newVersion="0.86.0.518" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Find" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-11.1.7.4454" newVersion="11.1.7.4454" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Find.Framework" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-11.1.7.4454" newVersion="11.1.7.4454" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Find.Cms" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-11.1.7.4454" newVersion="11.1.7.4454" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Find.Optimizations" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-11.1.7.4454" newVersion="11.1.7.4454" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Find.Statistics" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-11.1.7.4454" newVersion="11.1.7.4454" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Find.UI" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-11.1.7.4454" newVersion="11.1.7.4454" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.AspNet.SignalR.Core" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.3.0" newVersion="2.0.3.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Http.WebHost" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Commerce.Internal.Migration" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Logging.Log4Net" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.ServiceApi" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.10.0" newVersion="2.0.10.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Packaging.CmdAPI" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Packaging" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.2.4.0" newVersion="3.2.4.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.ServiceApi.Commerce" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.10.0" newVersion="2.0.10.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Commerce.Shell.ManagerIntegration" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.22.0.0" newVersion="9.22.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Find.Blocks" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Common.Cache" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-7.5.446.0" newVersion="7.5.446.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Common.ComponentArt.Web.UI" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2008.2.1204.35" newVersion="2008.2.1204.35" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Common.Configuration" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-7.5.446.0" newVersion="7.5.446.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Common.Criteria" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-7.5.446.0" newVersion="7.5.446.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Common.Data" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-7.5.446.0" newVersion="7.5.446.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Common.EventCounter" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-7.5.446.0" newVersion="7.5.446.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Common.Framework" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-7.5.446.0" newVersion="7.5.446.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Common.Framework.Exceptions" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-7.5.446.0" newVersion="7.5.446.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Common.Framework.Impl" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-7.5.446.0" newVersion="7.5.446.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Common.Security" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-7.5.446.0" newVersion="7.5.446.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Common.Web.Authorization" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-7.5.446.0" newVersion="7.5.446.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Common.Web.Authorization.Multiplexing" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-7.5.446.0" newVersion="7.5.446.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Common.Web" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-7.5.446.0" newVersion="7.5.446.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Find.Commerce" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.5.3.136" newVersion="9.5.3.136" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="EPiServer.Commerce.FindSearchProvider" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-8.12.3.136" newVersion="8.12.3.136" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.2.15.0" newVersion="1.2.15.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Http.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="NuGet.Core" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.7.41101.299" newVersion="2.7.41101.299" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <connectionStrings>
    <clear />
    <add name="EPiServerDB" connectionString="Data Source=;Initial Catalog=;Integrated Security=False;User ID=;Password=;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
    <add name="EcfSqlConnection" connectionString="Data Source=;Initial Catalog=;Integrated Security=False;User ID=;Password=;Connect Timeout=10;Application Name=EPiServerCommerceManager" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <system.web>
    <trace enabled="false" />
    <roleManager enabled="true" defaultProvider="CMSRoleProvider" cacheRolesInCookie="true">
      <providers>
        <clear />
        <add name="MultiplexingRoleProvider" type="EPiServer.Security.MultiplexingRoleProvider, EPiServer.Framework" provider1="SqlServerRoleProvider" provider2="WindowsRoleProvider" providerMap1="SqlServerMembershipProvider" providerMap2="WindowsMembershipProvider" />
        <add name="WindowsRoleProvider" applicationName="EPiServerSample" type="EPiServer.Security.WindowsRoleProvider, EPiServer" />
        <add name="SqlServerRoleProvider" connectionStringName="EPiServerDB" applicationName="EPiServerSample" type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <!-- ECF Start -->
        <add connectionStringName="EcfSqlConnection" applicationName="EPiServerCommerceManager" name="CMSRoleProvider" type="Mediachase.Commerce.Customers.Profile.Providers.CustomerSqlRoleProvider, Mediachase.Commerce" />
        <!-- ECF End -->
      </providers>
    </roleManager>
    <membership defaultProvider="CMSMembershipProvider" userIsOnlineTimeWindow="10" hashAlgorithmType="HMACSHA512">
      <providers>
        <clear />
        <add name="MultiplexingMembershipProvider" type="EPiServer.Security.MultiplexingMembershipProvider, EPiServer.Framework" provider1="SqlServerMembershipProvider" provider2="WindowsMembershipProvider" />
        <add name="WindowsMembershipProvider" type="EPiServer.Security.WindowsMembershipProvider, EPiServer" deletePrefix="BUILTIN\" searchByEmail="true" />
        <add name="SqlServerMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="EPiServerDB" requiresQuestionAndAnswer="false" applicationName="EPiServerSample" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
        <!-- ECF Start -->
        <add connectionStringName="EcfSqlConnection" applicationName="EPiServerCommerceManager" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" passwordFormat="Hashed" passwordStrengthRegularExpression="" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" name="CMSMembershipProvider" type="Mediachase.Commerce.Customers.Profile.Providers.CustomerSqlMembershipProvider, Mediachase.Commerce" />
        <!-- ECF End -->
      </providers>
    </membership>
    <profile enabled="true" defaultProvider="SqlProfileProvider" automaticSaveEnabled="false">
      <properties>
        <add name="Address" type="System.String" />
        <add name="ZipCode" type="System.String" />
        <add name="Locality" type="System.String" />
        <add name="Email" type="System.String" />
        <add name="FirstName" type="System.String" />
        <add name="LastName" type="System.String" />
        <add name="Language" type="System.String" />
        <add name="Country" type="System.String" />
        <add name="Company" type="System.String" />
        <add name="Title" type="System.String" />
        <add name="CustomExplorerTreePanel" type="System.String" />
        <add name="FileManagerFavourites" type="System.Collections.Generic.List`1[System.String]" />
        <add name="EditTreeSettings" type="EPiServer.Personalization.GuiSettings, EPiServer" />
        <add name="ClientToolsActivationKey" type="System.String" />
        <add name="FrameworkName" type="System.String" />
        <!-- ECF Start -->
        <add name="State" type="System.Int32" allowAnonymous="false" />
        <add name="FullName" type="System.String" allowAnonymous="true" />
        <add name="PreferredBillingAddress" type="System.String" />
        <add name="PreferredShippingAddress" type="System.String" />
        <add name="LastVisited" type="System.DateTime" />
        <add name="MarketId" type="System.String" allowAnonymous="true" />
        <!-- ECF End -->
      </properties>
      <providers>
        <clear />
        <add name="SqlProfile" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="EPiServerDB" applicationName="EPiServerSample" />
        <add name="SqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="EcfSqlConnection" />
      </providers>
    </profile>
    <compilation defaultLanguage="c#" optimizeCompilations="true" targetFramework="4.5.1">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
    </compilation>
    <customErrors mode="On" />
    <authentication mode="Forms">
      <forms name=".EPiServerLogin" loginUrl="~/Util/login.aspx" timeout="4320" defaultUrl="~/Protected/UI" enableCrossAppRedirects="true" />
    </authentication>
    <globalization culture="en" uiCulture="en" requestEncoding="utf-8" responseEncoding="utf-8" resourceProviderFactoryType="EPiServer.Framework.Localization.LocalizationServiceResourceProviderFactory, EPiServer.Framework" />
    <httpRuntime maxRequestLength="524288000" maxQueryStringLength="2097151" maxUrlLength="2097151" requestValidationMode="2.0" />
    <pages validateRequest="false" enableEventValidation="true" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" controlRenderingCompatibilityVersion="4.0">
      <controls>
        <add tagPrefix="EPiServer" namespace="EPiServer.Web.WebControls" assembly="EPiServer" />
        <add tagPrefix="EPiServer" namespace="EPiServer.Web.WebControls" assembly="EPiServer.Web.WebControls" />
        <add tagPrefix="XForms" namespace="EPiServer.XForms.WebControls" assembly="EPiServer.XForms" />
        <add tagPrefix="EPiServer" namespace="EPiServer.Framework.Web.WebControls" assembly="EPiServer.Framework" />
      </controls>
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Linq" />
        <add namespace="System.Collections.Generic" />
        <add namespace="EPiServer.Shell.Web.Mvc.Html" />
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.WebPages" />
        <add namespace="EPiServer.Framework.Web.Mvc.Html" />
      </namespaces>
    </pages>
    <caching>
      <outputCacheSettings>
        <outputCacheProfiles>
          <add name="ClientResourceCache" enabled="true" duration="3600" varyByParam="*" varyByContentEncoding="gzip;deflate" />
        </outputCacheProfiles>
      </outputCacheSettings>
      <sqlCacheDependency enabled="true" pollTime="1000">
        <databases>
          <add name="dbEPiServerCommerce" connectionStringName="EcfSqlConnection" />
        </databases>
      </sqlCacheDependency>
    </caching>
    <anonymousIdentification enabled="true" />
    <httpModules>
      <add name="ImageResizingModule" type="ImageResizer.InterceptModule" />
    </httpModules>
  </system.web>
  <system.net>
    <mailSettings>
      <smtp from="webmaster@site.com" deliveryMethod="Network">
        <network host="email.provider.com" port="25" defaultCredentials="true" />
      </smtp>
    </mailSettings>
  </system.net>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="BusinessFoundationInitializeModule" preCondition="managedHandler" type="Mediachase.Commerce.Core.Modules.BusinessFoundationInitializeModule, Mediachase.Commerce" />
      <add name="InitializationModule" type="EPiServer.Framework.Initialization.InitializationModule, EPiServer.Framework" preCondition="managedHandler" />
      <add name="UrlRewriteModule" type="EPiServer.Web.RoutingUrlRewriteModule, EPiServer" preCondition="managedHandler" />
      <add name="ShellRoutingModule" type="EPiServer.Shell.Web.Routing.ShellRoutingModule, EPiServer.Shell" />
      <remove name="WebDAVModule" />
      <add name="ProfileModule" type="EPiServer.Business.Commerce.HttpModules.ProfileModule, EPiServer.Business.Commerce" />
      <!--<add name="IntegrationAuthorizationModule" type="EPiServer.Integration.IntegrationAuthorizationModule, EPiServer.Integration"/>-->
      <add name="ImageResizingModule" type="ImageResizer.InterceptModule" />
    </modules>
    <handlers>
      <clear />
      <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add name="EcfImageHandler" verb="*" path="*.image.ashx" preCondition="integratedMode" type="Mediachase.Commerce.Website.Handlers.CatalogImageHandler,Mediachase.Commerce.Website" />
      <add name="EcfLibraryHandler" verb="*" path="*.xsd" preCondition="integratedMode" type="Mediachase.Commerce.Assets.LibraryRequestHandler, Mediachase.Commerce" />
      <add name="ReportingHttpHandler" preCondition="integratedMode" path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      <add name="TraceHandler-Integrated" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />
      <add name="WebAdminHandler-Integrated" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />
      <add name="AssemblyResourceLoader-Integrated" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />
      <add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />
      <add name="SimpleHandlerFactory-Integrated" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />
      <add name="WebServiceHandlerFactory-Integrated" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Services.Protocols.WebServiceHandlerFactory, System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />
      <add name="HttpRemotingHandlerFactory-rem-Integrated" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />
      <add name="HttpRemotingHandlerFactory-soap-Integrated" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />
      <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      <add name="SVCHandler" path="*.svc" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" resourceType="Unspecified" preCondition="integratedMode" />
      <add name="StaticFileHandler" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00" />
    </staticContent>
    <caching>
      <profiles>
        <add extension=".gif" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
        <add extension=".png" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
        <add extension=".js" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
        <add extension=".css" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
        <add extension=".jpg" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
        <add extension=".jpeg" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
      </profiles>
    </caching>
    <httpProtocol>
      <customHeaders />
    </httpProtocol>
    <validation validateIntegratedModeConfiguration="false" />
    <httpErrors errorMode="Custom">
      <remove statusCode="404" subStatusCode="-1" />
      <error statusCode="404" path="/404-page-not-found" responseMode="ExecuteURL" />
    </httpErrors>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="4294967295" />
      </requestFiltering>
    </security>
  </system.webServer>
  <location path="Protected/UI">
    <system.web>
      <httpRuntime maxRequestLength="524288000" maxQueryStringLength="2097151" maxUrlLength="2097151" requestValidationMode="2.0" />
      <pages enableEventValidation="true" enableViewState="true" enableSessionState="true" enableViewStateMac="true">
        <controls>
          <add tagPrefix="EPiServerUI" namespace="EPiServer.UI.WebControls" assembly="EPiServer.UI" />
          <add tagPrefix="EPiServerScript" namespace="EPiServer.ClientScript.WebControls" assembly="EPiServer" />
          <add tagPrefix="EPiServerScript" namespace="EPiServer.UI.ClientScript.WebControls" assembly="EPiServer.UI" />
        </controls>
      </pages>
      <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
      <authorization>
        <allow roles="WebEditors, WebAdmins, Administrators" />
        <deny users="*" />
      </authorization>
    </system.web>
    <system.webServer>
      <handlers>
        <clear />
        <!-- This section is copied from applicationhost.config -->
        <add name="AssemblyResourceLoader-Integrated-4.0" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv4.0" />
        <add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
        <add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
        <add name="WebServiceHandlerFactory-Integrated-4.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
        <add name="svc-Integrated-4.0" path="*.svc" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
        <add name="wildcard" path="*" verb="*" type="EPiServer.Web.StaticFileHandler, EPiServer.Framework" />
      </handlers>
    </system.webServer>
  </location>
  <location path="Protected/UI/CMS/admin">
    <system.web>
      <authorization>
        <allow roles="WebAdmins, Administrators" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="util">
    <system.web>
      <pages enableEventValidation="true">
        <controls>
          <add tagPrefix="EPiServerUI" namespace="EPiServer.UI.WebControls" assembly="EPiServer.UI" />
          <add tagPrefix="EPiServerScript" namespace="EPiServer.ClientScript.WebControls" assembly="EPiServer" />
        </controls>
      </pages>
      <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
    </system.web>
    <system.webServer>
      <handlers>
        <clear />
        <add name="AssemblyResourceLoader-Integrated-4.0" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv4.0" />
        <add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
        <add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
        <add name="WebServiceHandlerFactory-Integrated-4.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
        <add name="wildcard" path="*" verb="*" type="EPiServer.Web.StaticFileHandler, EPiServer.Framework" />
      </handlers>
    </system.webServer>
  </location>
  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <services>
      <service name="EPiServer.Events.Remote.EventReplication" behaviorConfiguration="DebugServiceBehaviour">
        <endpoint name="RemoteEventServiceEndPoint" contract="EPiServer.Events.ServiceModel.IEventReplication" binding="netTcpBinding" bindingConfiguration="RemoteEventsBinding" address="net.tcp://12.212.65.81:5001/RemoteEventService" />
      </service>
    </services>
    <client>
      <endpoint name="RemoteEventServiceClientEndPoint" address="net.tcp://12.212.65.80:5001/RemoteEventService" binding="netTcpBinding" bindingConfiguration="RemoteEventsBinding" contract="EPiServer.Events.ServiceModel.IEventReplication" />
    </client>
    <behaviors>
      <serviceBehaviors>
        <behavior name="DebugServiceBehaviour">
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <netTcpBinding>
        <binding name="RemoteEventsBinding" portSharingEnabled="true">
        </binding>
      </netTcpBinding>
      <webHttpBinding>
        <binding name="IndexingServiceCustomBinding" maxBufferPoolSize="1073741824" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647">
          <readerQuotas maxStringContentLength="10000000" />
        </binding>
      </webHttpBinding>
    </bindings>
  </system.serviceModel>
  <episerver.framework>
    <scanAssembly forceBinFolderScan="true">
      <add assembly="*" />
    </scanAssembly>
    <virtualRoles replacePrincipal="true">
      <providers>
        <add name="Administrators" type="EPiServer.Security.WindowsAdministratorsRole, EPiServer.Framework" />
        <add name="Everyone" type="EPiServer.Security.EveryoneRole, EPiServer.Framework" />
        <add name="Authenticated" type="EPiServer.Security.AuthenticatedRole, EPiServer.Framework" />
        <add name="Anonymous" type="EPiServer.Security.AnonymousRole, EPiServer.Framework" />
        <add name="PackagingAdmins" type="EPiServer.Security.MappedRole, EPiServer.Framework" roles="WebAdmins, Administrators" mode="Any" />
        <add name="CmsAdmins" type="EPiServer.Security.MappedRole, EPiServer.Framework" roles="WebAdmins, Administrators" mode="Any" />
        <add name="CmsEditors" type="EPiServer.Security.MappedRole, EPiServer.Framework" roles="WebEditors" mode="Any" />
        <add name="Creator" type="EPiServer.Security.CreatorRole, EPiServer" />
        <add name="CommerceAdmins" type="EPiServer.Security.MappedRole, EPiServer.Framework" roles="WebAdmins, Administrators" mode="Any" />
      </providers>
    </virtualRoles>
    <geolocation defaultProvider="maxmind">
      <providers>
        <add name="maxmind" type="EPiServer.Personalization.Providers.MaxMind.GeolocationProvider, EPiServer.ApplicationModules" databaseFileName="[appDataPath]\Geolocation\GeoLiteCity.dat" />
      </providers>
    </geolocation>
    <localization fallbackBehavior="FallbackCulture, MissingMessage, Echo" fallbackCulture="en">
      <providers>
        <add virtualPath="/Resources/LanguageFiles" name="languageFiles" type="EPiServer.Framework.Localization.XmlResources.FileXmlLocalizationProvider" />
      </providers>
    </localization>
    <virtualPathProviders>
      <clear />
      <add name="ProtectedAddons" virtualPath="~/Protected/UI/" physicalPath="modules\_protected" type="EPiServer.Web.Hosting.VirtualPathNonUnifiedProvider, EPiServer.Framework" />
    </virtualPathProviders>
    <appData basePath="\\SERVER\EPiServer\INSTANCE\appdata" />
  </episerver.framework>
  <episerver.shell>
    <publicModules rootPath="~/modules/" autoDiscovery="Modules">
    </publicModules>
    <protectedModules rootPath="~/Protected/UI/">
      <add name="EPiServer.Packaging.UI" />
      <add name="Find">
        <assemblies>
          <add assembly="EPiServer.Find.Framework" />
          <add assembly="EPiServer.Find.UI" />
          <add assembly="EPiServer.Find.Blocks" />
          <add assembly="EPiServer.Find.Cms" />
        </assemblies>
      </add>
      <add name="Shell" />
      <add name="CMS" />
      <add name="Commerce">
        <assemblies>
          <add assembly="EPiServer.Business.Commerce" />
          <add assembly="EPiServer.Commerce.UI" />
        </assemblies>
      </add>
      <add name="EPiServer.Commerce.Shell" resourcePath="{rootpath}/Commerce/Shell" />
      <add name="EPiServer.Commerce.Shell.ManagerIntegration" resourcePath="{rootpath}/Commerce/Manager" />
    </protectedModules>
  </episerver.shell>
  <episerver.search active="false">
    <namedIndexingServices defaultService="serviceName">
      <services>
        <!--<add name="{serviceName}" baseUri="{indexingServiceBaseUri}" accessKey="{accessKey}"/>-->
        <add name="serviceName" baseUri="http://localhost/IndexingService/IndexingService.svc" accessKey="local" />
      </services>
    </namedIndexingServices>
    <searchResultFilter defaultInclude="true">
      <providers />
    </searchResultFilter>
  </episerver.search>
  <location path="modulesbin">
    <system.web>
      <authorization>
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
  <episerver.packaging protectedVirtualPath="~/Protected/UI/" protectedPath="modules\_protected" installationMode="Code" />
  <episerver.search.indexingservice>
    <clients>
      <!--add name="example" description="example" ipAddress="127.0.0.1/8,192.168.0.0/24" ip6Address="" allowLocal="true|false" readonly="true|false" /-->
      <add name="local" description="local" allowLocal="true" readonly="false" />
    </clients>
    <namedIndexes defaultIndex="default">
      <indexes>
        <add name="default" directoryPath="[appDataPath]\Index" readonly="false" />
      </indexes>
    </namedIndexes>
  </episerver.search.indexingservice>
  <location path="IndexingService/IndexingService.svc">
    <system.web>
      <httpRuntime maxRequestLength="524288000" maxQueryStringLength="2097151" maxUrlLength="2097151" requestValidationMode="2.0" />
    </system.web>
    <system.webServer>
      <security>
        <requestFiltering>
          <requestLimits maxQueryString="65536" />
        </requestFiltering>
      </security>
    </system.webServer>
  </location>
  <appSettings>
    <add key="CommerceManagerApplicationName" value="EPiServerCommerceManager" />
    <add key="CommerceManagerLink" value="" />
    <add key="UseLegacyAssetSystem" value="false" />
    <add key="LibraryHandlerExtension" value="" />
    <add key="Mediachase.StoreEmail" value="eCommerce@episerver.com" />
    <add key="DisableVersionSync" value="true" />
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
    <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
    <add key="Epi.WebSockets.Enabled" value="false" />
    <add key="episerver:FindIndexCatalogContent" value="true" />
    <add key="episerver:FindListenOnCommerceRemoteEvents" value="true" />
    <add key="IntegrationTokenTimeout" value="60" />
  </appSettings>
  <mediachase.businessFoundation.data>
    <businessManager configSource="Configs\baf.data.manager.config" />
    <metaObject configSource="Configs\baf.data.metaobject.config" />
  </mediachase.businessFoundation.data>
  <Mediachase.BusinessFoundation>
    <BusinessFoundationSettings configSource="Configs\baf.config" />
  </Mediachase.BusinessFoundation>
  <mediachase.fileUploader>
    <fileUploaderContext />
    <tempFileStorage timeout="60" defaultProvider="McLocalDiskTempFileStorageProvider">
      <providers>
        <add name="McLocalDiskTempFileStorageProvider" type="Mediachase.FileUploader.Web.LocalDiskTempFileStorageProvider, Mediachase.FileUploader" description="" tempStoragePath="%TEMP%" />
      </providers>
    </tempFileStorage>
    <uploadProgress timeout="60" defaultProvider="McInProcessProgressStateProvider">
      <providers>
        <add name="McInProcessProgressStateProvider" type="Mediachase.FileUploader.Web.InProcessUploadProgressProvider, Mediachase.FileUploader" description="" />
      </providers>
    </uploadProgress>
    <fileUploadControl embeddedModePage="Apps/Core/Controls/Uploader/uploadembedded.aspx" iframeModePage="Apps/Core/Controls/Uploader/uploadiframe.aspx" popUpModePage="Apps/Core/Controls/Uploader/uploadpopup.aspx" />
  </mediachase.fileUploader>
  <CommerceFramework>
    <Mediachase.Search configSource="Configs\Mediachase.Search.config" />
    <AssetManagement configSource="Configs\ecf.asset.config" />
    <Workflow configSource="Configs\ecf.workflow.config" />
    <Application configSource="Configs\ecf.app.config" />
    <Catalog configSource="Configs\ecf.catalog.config" />
    <Marketing configSource="Configs\ecf.marketing.config" />
    <Orders configSource="Configs\ecf.order.config" />
    <Customers configSource="Configs\ecf.customer.config" />
    <Security configSource="Configs\ecf.security.config" />
    <SSL configSource="Configs\ecf.ssl.config" />
    <Customization configSource="Configs\ecf.customization.config" />
  </CommerceFramework>
  <FrameworkProviders>
    <dataService defaultProvider="SqlDataProvider">
      <providers>
        <add name="SqlDataProvider" type="Mediachase.Data.Provider.SqlDataProvider, Mediachase.SqlDataProvider" connectionStringName="EcfSqlConnection" applicationName="EPiServerCommerceManager" />
      </providers>
    </dataService>
    <templateService defaultProvider="XslTemplateProvider">
      <providers>
        <add name="XslTemplateProvider" type="Mediachase.Commerce.Engine.Template.Providers.XslTemplateProvider, Mediachase.Commerce" applicationName="EPiServerCommerceManager" templateSource="C:\EPiServer\EPiServerCommerceManager\eCommerceFramework\5.3\Shared\NotificationTemplates\{0}\{1}.xsl" />
      </providers>
    </templateService>
    <imageService defaultProvider="HandlerImageProvider">
      <providers>
        <add name="HandlerImageProvider" type="Mediachase.Commerce.Engine.Images.Providers.HandlerImageProvider, Mediachase.Commerce" urlFormatString="~/images/t/{0}.image.ashx" applicationName="EPiServerCommerceManager" />
      </providers>
    </imageService>
    <urlService defaultProvider="EPiStaticUrlProvider">
      <providers>
        <add name="EPiStaticUrlProvider" type="EPiServer.Business.Commerce.Providers.StaticUrlProvider, EPiServer.Business.Commerce" />
      </providers>
    </urlService>
  </FrameworkProviders>
  <location path="Admin/SettingsPlugin">
    <system.web>
      <authorization>
        <allow roles="WebAdmins, Administrators" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="Admin/SitePlugin">
    <system.web>
      <authorization>
        <allow roles="CommerceAdmins" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="Edit">
    <system.web>
      <authorization>
        <allow roles="WebEditors, WebAdmins, Administrators" />
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
  <!-- ECF Start -->
  <!-- Commons Logging -->
  <common>
    <logging configSource="log.config" />
  </common>
  <!--END: Mediachase Framework Configuration -->
  <location path="Profile">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>
  <!-- ECF End -->
  <location path="Root">
    <system.webServer>
      <handlers>
        <add name="wildcard" path="*" verb="*" type="EPiServer.Web.StaticFileHandler, EPiServer.Framework" />
      </handlers>
    </system.webServer>
  </location>
  <location path="Modules/_Protected">
    <system.webServer>
      <validation validateIntegratedModeConfiguration="false" />
      <handlers>
        <clear />
        <add name="BlockDirectAccessToProtectedModules" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
      </handlers>
    </system.webServer>
  </location>
  <resizer>
    <remotereader signingKey="" allowAllSignedRequests="false" allowRedirects="5">
      <allow domain="" />
      <allow domain="" />
      <!-- XML whitelisting requires V3.2 or higher -->
    </remotereader>
    <plugins>
      <!-- add the following element to have ImageResizing.net use your new plugin -->
      <add name="EPiServerBlobReader" />
      <!-- plus any other plugins you need, 
    DiskCache is always a good one to use
    -->
      <add name="MvcRoutingShim" />
      <add name="DiskCache" />
      <add name="RemoteReader" />
    </plugins>
  </resizer>
  <bvn404Handler handlerMode="On" fileNotFoundPage="/404-page-not-found">
    <providers>
      <!--
 	 	        Register your own handler that will be given a chance to
 	 	        rewrite the url. The type must implement INotFoundHandler
 	 	        <add name="NameOfHandler" type="Your.Handler.Here"/>
 	 	     -->
    </providers>
  </bvn404Handler>
  <!--<bvn404Handler handlerMode="On" fileNotFoundPage="/404notfound.aspx">
    <providers>
      -->
  <!--
 	 	        Register your own handler that will be given a chance to
 	 	        rewrite the url. The type must implement INotFoundHandler
 	 	        <add name="NameOfHandler" type="Your.Handler.Here"/>
 	 	     -->
  <!--
    </providers>
  </bvn404Handler>-->
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>
#155257
Sep 13, 2016 10:35
Vote:
 

Hi,

Just to make sure, did you try with another catalog zip file? 

#155258
Sep 13, 2016 10:49
Vote:
 

Yes, I've tried with multiple catalog files and they all work fine when importing through CommerceManager but fail when using the ServiceApi.

I have now also been scanning the Windows Event Log for any suspicious logs but can't find anything here either (not even a warning).

#155259
Sep 13, 2016 10:54
Vote:
 

I can't see anything obviously wrong - and you've done a great job of exhausting all possible fixes. I would suggest you to contact our developer support service for further assistance.

Regards,

/Q 

#155261
Sep 13, 2016 11:32
Vote:
 

Thanks for the help Quan! I'll keep on debugging as well as communicating with developer support. I'll update this thread if the issue gets resolved.

#155274
Sep 13, 2016 12:18
Vote:
 

I think this is problematic:

maxRequestLength="524288000"

Max value should be 2097151 (KB), which is equivalent to 2GB. While this might not be the root cause, but it would not hurt to change it to something "smaller", like 65000, to test, I guess?

/Q

#155447
Edited, Sep 16, 2016 22:45
Vote:
 

I've tried fiddling with these settings as well, also tried adding targetFramework="4.5" but the issue seem to be in some other place. Just can't figure out where.

#155465
Sep 19, 2016 7:43
Vote:
 

Hi,

I'm (kind of) working on the support case related to this. Is the issue replicate-able anywhere else, or just on your production site? 

#155472
Sep 19, 2016 9:12
Vote:
 

So far I have not been able to replicate the the issue anywhere besides the production site.

As mentioned in the first post the ServiceApi works on the test site. I've also tried moving the test servers AppData-path to another network server in order to replicate the conditions of the live server as much as possible but I am still unable to produce the same issue. The configurations are identical besides database connections and WCF settings, since the test server setup is two websites in the same IIS whilst the production is two separate servers (on the same network with the correct firewall settings).

Let me know if you need any other kind of information and I'll try to come back as soon as possible. 

Thanks!

#155475
Sep 19, 2016 9:25
Vote:
 

Hi,

Can you send me directly (quma at episerver.com) the web.config of test and production sites?

As I said about, you did a great job of exhausting the possibilities, so we might have to step into some dangerous zones to get this solved :)

/Q

#155476
Sep 19, 2016 9:30
Vote:
 

In our forms authentication section in the web.config the setting enableCrossAppRedirects was set to true – in both environments.

But since the staging environment is setup on one server I guess it didn’t actually perform a redirect, whilst in the production environment the front site and edit site are setup on two separate servers I’m guessing the request somehow got redirected when authenticating even with Owin.

This issue was resolved by removing the enableCrossAppRedirects from the web.config in the production environment.

#162229
Oct 13, 2016 8:46
This topic was created over six months ago and has been resolved. If you have a similar question, please create a new topic and refer to this one.
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.