-->

Creating more than one site in Kentico?

2019-09-02 04:46发布

问题:

Am going to use Kentico to create more than one store (Site) and assign user for each store to add/modify/delete his products, i've created 2 stores the first one with domain localhost:8080 and second one is storeone.localhost:8080 as documentation said in Kentico Doc URL, i can open first site with no problem but when i tried to switch to second Site it gives me Bad Request - Invalid Hostname .. can any one help me in this?? .. also i would appreciate it if any one help me on how to extract product data using Kentico API's as documentation provide me only with updating/modifying/removing data from database and i want to know how to display it with it's attachments like images pdf that i've uploaded it.

回答1:

The best approach is to use two different ports. The reason for this is IIS is by default bound to port 80. So what I'd do is leave one site at 80 and do another at say 2. Make these bindings in IIS then go to Kentico and add your second site at localhost:2 vs. :8080. There's a conflict with port numbers. Kentico and IIS are "confused" and don't know which one to serve up. The only way it will work with the same port is to start and stop sites within Kentico.



回答2:

Brenden is correct - there cannot be 2 sites running on same domain. What you need to do is configure IIS bindings. What I often do is that I configure my hosts file (C:\Windows\System32\drivers\etc) and add a few more rules like:

127.0.0.1 localhost2
127.0.0.1 localhost3

And then I can use bind my Kentico sites to these domains. Don't forget to also change the domain names in Kentico -> Sites app.

As for your second question:

It depends whether you want to get only SKUInfo object or page object where the custom data (page type fields) are stored. If you just need SKUInfo you can use something like:

     // gets only corresponding SKU Info object
     var singleProduct = SKUInfoProvider.GetSKUInfo(1); // SKUID from COM_SKU table
     if (singleProduct != null)
     {
          var name = singleProduct.SKUName;
          var price = singleProduct.SKUPrice;
     }

If you need to get the product with all custom fields you need to use the Pages API as you would with any other page. A simple example:

    // gets sku with all custom properties
    var tree = new TreeProvider(MembershipContext.AuthenticatedUser);
    var singleProduct = tree.SelectSingleDocument(2); // DocumentID from CMS_Document table
    if (singleProduct != null)
    {
        // work with product
    }

    // or for multiple products
    var products = tree.SelectNodes("custom.myProductType");
    foreach (var product in products)
    {
        // work with products/pages
    }

For the purpose of retrieving pages I would highly recommend to check this documentation article which contains a lot of examples.



标签: kentico