This topic has not yet been rated - Rate this topic

CatalogSiteAgent Class

The CatalogSiteAgent class contains configuration for a connection directly to a Commerce Server site's catalog database. This class cannot be inherited.

Namespace:  Microsoft.CommerceServer.Catalog
Assembly:  Microsoft.CommerceServer.Catalog (in Microsoft.CommerceServer.Catalog.dll)
public sealed class CatalogSiteAgent

The CatalogSiteAgent class contains configuration for a connection directly to a Commerce Server site's catalog database.

The SiteName is used to find the connection string to connect to the database and also to find the authorization configuration.

public CatalogContext GetCatalogContext()
{
  CatalogContext catalogContext = null;
  CatalogServiceAgent catalogServiceAgent = null;

  try
  {
    if (config.InitializationMode == ConnectionMode.Agent)
    {//AGENT MODE
      if ((config.UserName == null) || (config.UserName.Equals(
        Environment.GetEnvironmentVariable("USERDOMAIN") + @"\" +
          Environment.GetEnvironmentVariable("USERNAME"))))
      {
        // Default case when nothing is specified
        // Uses the user's default credentials when anonymous is not allowed
        catalogServiceAgent = new CatalogServiceAgent(config.WebServiceURL, ServiceAgent.DefaultAuthMethods);

        catalogContext = CatalogContext.Create(catalogServiceAgent);
      }
      else if (config.UserName != null)
      {
        // Create custom
        CredentialCache credentials = new CredentialCache();
        NetworkCredential networkCredential = new NetworkCredential();
        //create new uri with web service url
        System.Uri uri = new System.Uri(config.WebServiceURL);

        //add the user name, password, and domain to the network credential
        int index = config.UserName.IndexOf(@"\");
        networkCredential.UserName = config.UserName.Substring(index + 1);
        networkCredential.Password = config.Password;
        networkCredential.Domain = config.UserName.Substring(1, index - 1);

        //add the network credential to the credential cache collection
        credentials.Add(uri, "NTLM", networkCredential);

        catalogServiceAgent = new CatalogServiceAgent(config.WebServiceURL, ServiceAgent.DefaultAuthMethods);
        catalogServiceAgent.Credentials = credentials;

        catalogContext = CatalogContext.Create(catalogServiceAgent);
      }
      else
        throw new System.InvalidOperationException("Cannot perform this operation without initialization");
    }
    else
    {//INPROC MODE
      CatalogSiteAgent csa = new CatalogSiteAgent();
      csa.AuthorizationMode = config.AuthorizationMode;
      csa.AuthorizationPolicyPath = config.AzManXmlFileStore;
      csa.IgnoreInventorySystem = config.IgnoreInventorySystem;
      csa.SiteName = config.SiteName;
      catalogContext = CatalogContext.Create(csa);
    }
  }
  catch (Exception e)
  {
    Console.WriteLine("Error getting CatalogContext: " + e.Message);
    throw e;
  }
  if (catalogContext != null)
    inventoryContext = catalogContext.InventoryContext;
  return catalogContext;
}
System..::.Object
  Microsoft.CommerceServer.Catalog..::.CatalogSiteAgent
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)