InteropService installation and configuration

Release 1.0 - ...

The Cms Manager Server Instance is no longer able to render items properly, since the Smartsite Cms render engine does not understand the new macro and viper syntax. Therefore, the Smartsite iXperion Falcon release offers an InteropService (WCF) service, which is able to render requested items.

The Smartsite Cms Instance will call this service from within the built-in render engine to render each request. In edit item mode, it will also send the item data as part of the request, so previewing item changes still works as well.

However, the above scenario is only valid if the InteropService service has been properly configured.

smartsite.config

First of all, every built-in (WCF) service that should be started when the (front-end) site is started should be listed within the smartsite.config configuration file (see example below).

XML CopyCode image Copy Code
<?xml version="1.0"?>
<configuration>
  <appSettings>
    <!-- inner xml omitted -->
  </appSettings>
  <runtime>
    <!-- other xml nodes omitted -->
    <services>
      <service id="StateSyncService" type="Smartsite.Core.Services.StateSyncService, Smartsite.Services" enabled="true" />
      <service id="InteropService" type="Smartsite.Core.Services.InteropService, Smartsite.Services" enabled="true" />
      <service id="EventSynchronizationService" type="Smartsite.Core.Services.EventSynchronizationService, Smartsite.Services" enabled="true" />
      <service id="SchemaService" type="Smartsite.Core.Services.SchemaService, Smartsite.Services" enabled="true" />
    </services>
  </runtime>
</configuration>

web.config

Second, the web.config configuration file should contain a system.serviceModel section, with a service node (within the services node) describing the configuration for the InteropService service (see example below).

XML CopyCode image Copy Code
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <!-- other xml nodes omitted -->
  <system.serviceModel>
    <services>
      <!-- other services omitted -->
      <service behaviorConfiguration="InteropServiceBehavior" name="Smartsite.Core.Services.InteropService">
        <endpoint address="net.pipe://localhost/InteropService" binding="netNamedPipeBinding"
          bindingNamespace="http://Smartsite.Webservices.InteropService"
          bindingConfiguration="InteropServiceBinding"
          contract="Smartsite.Core.Services.IInteropService" />
      </service>
    </services>
    <bindings>
      <netNamedPipeBinding>
        <binding name="InteropServiceBinding" maxReceivedMessageSize="1048576">
          <readerQuotas maxStringContentLength="1048576" />
        </binding>
      </netNamedPipeBinding>
      <!-- other bindings omitted -->
    </bindings>
  </system.serviceModel>
</configuration>

COM Interop

The communication between the InteropService service and the render engine of the Smartsite Cms Instance is facilitated by the COM Interop assembly Smartsite.InteropServicesClient.dll. This assembly should be installed in the System Files subfolder of your Smartsite installation folder (usually C:\Program Files\Smartsite Software\Smartsite Six).

Although Smartsite.InteropServicesClient.dll is a .NET assembly, it should be registered in order for COM to be able to locate this assembly. The Smartsite installation will take care of that, however whenever it is necessary to register this assembly manually run the following line of code in a command prompt:

  CopyCode image Copy Code
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\RegAsm "c:\Program Files\Smartsite Software\Smartsite Six\System Files\Smartsite.InteropServicesClient.dll" /codebase

The Cms Instance will read the web.config to determine the remote address of the InteropService service.