an ASP.NET Open Source CMS & eCommerce platform
Search:
Skip Navigation LinksHome > DotShoppingCart Forums > Support > Installation > installing at webhost4life ISP
Last Post 1/15/2009 10:49:19 AM By clong. 6 replies.
8/30/2008 4:19:32 PM
baka
Posts: 5
Joined: 8/30/2008
installing at webhost4life ISP

Could you provide step by step instructions for manual installation of the V20 starter kit on WH4L ISP?

I got this response from their helpdesk.

>>From the step 2 of installation guide:

>>InstDSC.exe <database server name> <database name> <database data file path>
>><encryption key path> [<smtp email server>] [<system email address>]

>>You may run on your local computer, but we don't have <encryption key path> installed on database server, therefore we are not sure can this application install to the web >>server. Thanks. 

 

9/5/2008 9:51:16 PM
baka
Posts: 5
Joined: 8/30/2008
Re: installing at webhost4life ISP

I actually got the system installed on my ISP webhost4 life. But It still have a couple of questions.

What I did was:

1. Unzip &  install the system on my local XP PC

2. run the script to install the Database Locally.

3. FTP the files under /web folder to a direcory under my ISP

4. Set the directory to use ASP NET 2.0/3.5 engine, permission these directories, and reset the server.

5. Attach the DB to the DB server at WH4L.

6. Modified web config to use remote connection string.

Now I am getting some errors that I think may be related to the directory structure that was created by the install script.

The script does create a "FTdata" directory  which contains another directory called dsc.

These directories are located underneath the data directory that is specified as a paramenter in the install script.

The problem is that my ISP does not allow directories to be created on the database server, only allows the mdf file to be uploade to the db server and attached to the database.

So now my questions are:   (1) What is the purpose of the FTdata directory and FTdata/dsc directories?  (2) is there a workaround or parameter I can set in order to locate these directories under my web structure which is located on my webserver? 

It would really be helpful if someone could explain the manual steps that one could take in order to perform the tasks that the install script does.

 

9/5/2008 10:00:53 PM
baka
Posts: 5
Joined: 8/30/2008
Re: installing at webhost4life ISP
Here is the error I am getting now:
 
This occurs when I click on some, but not all featured products on the home page.
 

A generic error occurred in GDI+.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.

Source Error:

<table width="100%" bgcolor="#ffffcc"> <tbody> <tr> <td>
Line 40:                                         <td style="vertical-align:middle;">                                    
Line 41:                                             <a href="javascript:OpenPopupWindowFromMain()" 
Line 42:                                                 onmouseover="imgProduct.src='<%#FileController.GetImageUrl((int)Eval("ImageId"), 400, 300)%>'; currentImageId=<%#Eval("ImageId")%>;" >
Line 43:                                                 <img src="<%#FileController.GetImageUrl((int)Eval("ImageId"), 80, 60)%>" alt="Click to enlarge view" />
Line 44:                                             </a>
</td> </tr> </tbody> </table>
Source File: c:\...\BizOp\Store\ProductDetail\DefaultTemplate.ascx    Line: 42

Stack Trace:

<table width="100%" bgcolor="#ffffcc"> <tbody> <tr> <td>
[ExternalException (0x80004005): A generic error occurred in GDI+.]
   System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) +397778
   System.Drawing.Image.Save(String filename, ImageFormat format) +69
   DotShoppingCart.OpenSource.Core.DbImage.CreateFile(Int32 imageId, String localImagePath, Int32 width, Int32 height) +983
   DotShoppingCart.OpenSource.Core.DbImage.GetFile(String host, Int32 imageId, Int32 width, Int32 height, Boolean noTimeStampCheck) +811
   DotShoppingCart.OpenSource.Core.FileController.GetImageUrl(Nullable`1 imageId, Int32 width, Int32 height, Boolean noTimeStampCheck) +125
   DotShoppingCart.OpenSource.Core.FileController.GetImageUrl(Nullable`1 imageId, Int32 width, Int32 height) +52
   ASP.store_productdetail_defaulttemplate_ascx.__DataBind__control3(Object sender, EventArgs e) in c:\...\BizOp\Store\ProductDetail\DefaultTemplate.ascx:42
   System.Web.UI.Control.OnDataBinding(EventArgs e) +99
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +206
   System.Web.UI.Control.DataBind() +12
   System.Web.UI.Control.DataBindChildren() +204
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +216
   System.Web.UI.Control.DataBind() +12
   System.Web.UI.WebControls.DataList.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) +131
   System.Web.UI.WebControls.DataList.CreateControlHierarchy(Boolean useDataSource) +613
   System.Web.UI.WebControls.BaseDataList.OnDataBinding(EventArgs e) +56
   System.Web.UI.WebControls.BaseDataList.DataBind() +52
   Controls_ProductDetail_DefaultTemplate.Page_Load(Object sender, EventArgs e) in c:...\BizOp\Store\ProductDetail\DefaultTemplate.ascx.cs:50
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +47
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Control.LoadRecursive() +131
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436
</td> </tr> </tbody> </table>
9/5/2008 11:07:57 PM
baka
Posts: 5
Joined: 8/30/2008
Re: installing at webhost4life ISP
Ok the GDI+ error that I got was resolved by contacting support at my ISP and asking them to "Reset the application pool"
 
This may have to be done after directory permissions are set.
 
On a side note, when the pool was reset on the server, the application loaded much much faster. So if  it is running sluggish, you might want to check this.
9/5/2008 11:18:49 PM
lukezy
Posts: 2109
Joined: 6/12/2007
Location:WA, US
Re: installing at webhost4life ISP
Thank you for reporting back. We don't have manual steps yet. The best bet is to read the source code of InstDSC. Hope this helps.
 
FTdata is the full text catalog file. Ask your ISP if their DB support fulltext index.
DotShoppingCart Staff
11/8/2008 8:08:03 AM
NBstrat
Posts: 5
Joined: 11/6/2008
Re: installing at webhost4life ISP
I also was getting the generic error in GDI+ after removing the demo products and adding new products. Notes posted below if it may help someone else.
 
Problem seems to have been a permissions problem, although the app pool was reset, application recreated, and server rebooted by tech support during this process. Performance improvements probably from the reboot/pooling reset, but the underlying error was not resolved until the permissions had been modified.
 
Permissions @ app root
-------------------------------------
Administrator -- RWXDPO
SYSTEM -- RWXDPO
IUSR_DEDI477 -- RX
NETWORK -- RX
IUSR_SULFATE -- RWX
NETWORK SERVICE -- RWX

 

1/15/2009 10:49:19 AM
clong
Posts: 2
Joined: 1/15/2009
Re: installing at webhost4life ISP
I was able to successfully install version 3 (paid version) on a shared hosting plan at WebHost4Life.com (WH4L) and wanted to share with everyone the steps I took. These instructions assume you are somewhat familiar with the WH4L control panel, IIS and SQL. This assumes you have the Windows Advanced hosting plan. Commands you need to type are in red.
  1. Unzip the files to your local computer (I am running XP). You'll need to be running locally (or have access)  SQL Server 2005 so you can run the command line installer (which installs the database). I wish the installer included the MDF/LDFs, or a backup file so you could skip this step...
  2. Go to your local SQL Server 2005 and backup the database to a file.
  3. Create a new SQL 2005 database on WH4L. FTP the backup file from step 2, and restore it. You should be able to connect to it from SQL Server Management Studio
  4. Upload all of the files in the "Web" directory to WH4L. Set that directory as a .Net application in the control panel (version 2.0/3.0/3.5)
  5. Enable full permissions for the "Network Service" account for the following directories: images, files, App_Data. App_Themes and the DSC.config file. (See the post above from NBStrat on 11/8/08 for more info). Note: you might have to grant the "Everyone" and "Iuser_Accountname" accounts full permissions, too.
  6. Modify the database connection string in the web.config file (look in the connectionStrings section) to point to WH4L's SQL Server
  7. Optional: modify web.config to enable remote errors (for remote debugging: <customErrors mode="Off">
  8. In SQL Management Express, run the following query to enable the SQL Broker service:
       ALTER DATABASE xxx SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE

              where xxx is the name of your database

You should be good to go now. If not:
  • check your asp.net version
  • check file/directory permissions
  • make sure you can connect to the SQL Server.
Now you need to enable Full Text indexing on your database. In SQL Server Management Studio (Express), open a new query window, and execute the following commands:
 
exec sp_fulltext_database 'enable'

CREATE FULLTEXT CATALOG ActiveUpdate AS DEFAULT

CREATE FULLTEXT INDEX ON [dbo].[DSC_Product] KEY INDEX [PK_DSC_Product] ON [ActiveUpdate]
GO
CREATE FULLTEXT INDEX ON [dbo].[DSC_Product_Attribute_Value] KEY INDEX [PK_DSC_Product_Attribute_Value] ON [ActiveUpdate]
GO
PRINT N'Adding full text indexing to columns'
GO
ALTER FULLTEXT INDEX ON [dbo].[DSC_Product] ADD (sku LANGUAGE 1033)
GO
ALTER FULLTEXT INDEX ON [dbo].[DSC_Product] ADD (productName LANGUAGE 1033)
GO
ALTER FULLTEXT INDEX ON [dbo].[DSC_Product] ADD (shortDescription LANGUAGE 1033)
GO
ALTER FULLTEXT INDEX ON [dbo].[DSC_Product] ADD (manufacturerSKU LANGUAGE 1033)
GO
ALTER FULLTEXT INDEX ON [dbo].[DSC_Product_Attribute_Value] ADD (value LANGUAGE 1033)
GO
ALTER FULLTEXT INDEX ON [dbo].[DSC_Product] ENABLE
GO
ALTER FULLTEXT INDEX ON [dbo].[DSC_Product_Attribute_Value] ENABLE
 
At this point you can try this search in the query window to see if all of the indexes are present:
 
exec DSC_Product_Search @keywords = 'some search value', @TotalProducts = 0
 
If you get an error, you might need to manually create some indexes; to create a full text index:
 
  1. Right click on the table, and choose Modify (you are now in table design mode)
  2. Right click on any row and choose "Fulltext Index..."
  3. Click the "Add" button to create a new index
  4. In the right pane, Under "General > Columns", click the button to select the columns you want to index
You will need to manually index the following tables (columns to index are in parenthesis):
  • DSC_Attribute (name, description)
  • DSC_Product_Descriptor (title, descriptor)
  • DSC_Html (title, data)
Finally, you might need to manually create this stored procedure:
 
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[DSC_Html_Search]
    @keywords NVARCHAR(1024),
    @ResultsPerPage INT = 24,
    @rowIndex INT = 0,
    @TotalResults INT OUTPUT
AS
BEGIN

    CREATE TABLE #result (RowNumber INT, HtmlId INT)

    INSERT    INTO #result
    SELECT    ROW_NUMBER() OVER (ORDER BY r.RANK DESC) AS RowNumber, r.[KEY] AS HtmlId
    FROM FREETEXTTABLE(dbo.DSC_Html, *, @keywords, LANGUAGE 'English', 100) AS r
    INNER JOIN dbo.DSC_Html AS html
            ON html.HtmlId = r.[KEY]
    WHERE    html.Searchable = 1

    SELECT    @TotalResults = COUNT(*) FROM #result

    SELECT    html.*
    FROM    dbo.DSC_Html AS html
    INNER JOIN #result r
            ON html.HtmlId = r.HtmlId
    WHERE    r.RowNumber BETWEEN @rowIndex + 1 AND @rowIndex + @ResultsPerPage
    ORDER BY r.RowNumber

END
 
You should now be good to go.
 
Tips
  • I kept running into performance issues, and after talking to support, I had to compile the solution locally, and publish the solution to the website. This seemed to improve performance and stability.
  • I had to install the application into a subfolder, and set this folder as a web application in the WH4L control panel. Putting all of the files in the  root did not work, as I could not set the root as its own application pool.
 
DISCLAIMER: Your mileage may vary, and follow at your own risk.