Showing posts with label NopCommerce. Show all posts
Showing posts with label NopCommerce. Show all posts

June 3, 2011

Ran Out Of Database Space On Godaddy Shared Hosting

I was hosting Nopcommerce On Godaddy server for a client , one day client was trying to upload pictures and got the following error

Could not allocate space for object 'dbo.Nop_Picture'.'Nop_Picture_PK' in database 'nopcomm14demo' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup


The above error occurred because Godaddy has maximum DB space limit  of 1GB and client exceeded that I called Godaddy support, wanted to get a solution from them, asked them to charge extra money and provide more DB Space but they said ,they can't do it on the shared hosting server.




I decided to move the DB with Database Mart.
So first I took the Back Of Database from the Godaddy. 
To  take DB BackUp 
1.) Login to Godaddy A/c 
2.)Go to SqlServer Databases 
3.) click on edit/View Details for your DB




4.) click on BackUp Option


5.) Set Backup folder and Click Ok




6.) Processing Will start but it takes 2-3 hours 


7.) Now Connect to your a/c with FTP client and Download that Database Back Up file on your local hardrive .




8.) Now  I restored this DB On my local machine 


      1.) Login to your Local Sql Server 
      2.) Right click on Databases , clcik On Restore
     3.) Provide new Database Name 
     4.) Select the option From Device , and click the button near to that option



                 5.) It will open up the option to add your .back file , Add the file location , Give file name , Click OK


                   6.) Restoring will be started and After some time Database will be available to the local Machine


9.) Now I have to Export this Data In DatabaseMart Server


10.) I logged on Remotely to that Database Mart Server


11.)Executed NopCommerce script to create the Database.


12) Now I have to Export Data from my machine to there


13) Use Import/Export Wizard 
         1.) Right Click on the Empty DB on Remote Server 
        2.) Go to Tasks--->Import Data


               3.) Follow Wizard steps Choose Local (Source)DB Name , and Select the Database from which you want to export the data.Click Next


             4.)Enter the Destination DB Information 


                 5.) Select Copy Data from Table Option


                      6.) Choose the table you want to Import 


                    7.) Click Edit Mapping and  Check 'Enable identity insert'                                          (http://www.dotnetissues.com/search/label/Import%2FExport%20Wizard%20Sql%20server)


                   8.) Click Ok 


                   9.) Processing will be started ,It takes time as Nop_Picture table has binary data for the image


                  10.) Now Database has been restored on the new server which is providing me 4 GB space




Now  My Databas is on DatabaseMart  server but still the Application is hosted on Godaddy.
I changed ConnectionStrings.config file of the NopCommerce Application and still  was not able to connect to the new DB server
I called Godaddy and figured out that Database Mart is Providing me Database on Port 1087 and Godaddy doesn't allow to connect to other then port 80. So I have now no choice but to move the application hosting also on the Database Mart Server,Which i did and My application is working fine on DatabseMart server and I don't have to worry about DB Space also





August 28, 2010

nopCommerce Mail Configuration

To enable mail Settings in nopCommerce deployed on Godaddy Server which will allow customer to fill up the contact form and send information to the Admin through email

  1. Click Configuration.
  2. Click Mail Settings.
  3. Fill up the below information
    Store Admin Email
    Your email address.
    Store Admin Email Display Name
    The name to display on your email.
    (Make sure that the “Store Admin Email” value is something other that a yahoo, hotmail, gmail address – GoDaddy does not allow these domains)
    Host
    relay-hosting.secureserver.net
    Port
    25
    User
    Your full email address.
    Password
    Your email account password.
    Enable SSL
    Do not enable this option.
    Use default credentials
    Do not enable this option.
  4. Click Save.

To enable contact us form, the hack involves getting to the source code.
The problem with Godaddy.com is that it does not allow yahoo, hotmail
or gmail addresses to the “from” email address. Most other email
addresses are allowed

To solve this, go to the file ContactUs.ascx.cs
Within this file, in the method,

btnContactUs_click(), change the line
that starts with
MessageManager.SendEmail(….); to the following:

MessageManager.SendEmail("Contact us form", "Name: " +
txtFullName.Text + "\nEmail: " + txtEmail.Text + "\nEnquiry: " +
txtEnquiry.Text, "admin@yourstore.com", to);

Basically, we have altered the “from” email address to be hard-coded
to something static. We also appended the email address and Name to
the information being sent to the “to” address.

August 27, 2010

SecurityPolicyException : could not load the dll Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.Configuration.Design.dll

 After deployment, the Register/Contact links on the
NopCommerce web application gives SecurityPolicyException -- says
could not load the dll
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.Configuration.Design.dll

Solution: Do not put this dll in the deployment , If it is there in bin delete that
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.Configuration.Design.dll

Generic error occurred in GDI+. Description : Nopcommerce

 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:
An unhandled exception was generated during the execution of the
current web request. Information regarding the origin and location of
the exception can be identified using the exception stack trace below.
Stack Trace:
[ExternalException (0x80004005): A generic error occurred in GDI+.]
  System.Drawing.Image.Save(String filename, ImageCodecInfo encoder,
EncoderParameters encoderParams) +377630
  System.Drawing.Image.Save(String filename, ImageFormat format) +69
  NopSolutions.NopCommerce.Common.Media.PictureManager.GetPictureUrl(Picture
picture, Int32 Width, Int32 Height, Boolean showDefaultPicture) in
PictureManager.cs:195
  NopSolutions.NopCommerce.Web.Modules.ProductBox1Control.BindData() +198
  NopSolutions.NopCommerce.Web.Modules.ProductBox1Control.Page_Load(Object
sender, EventArgs e) +33
  System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,
Object o, Object t, EventArgs e) +14
  System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object
sender, EventArgs e) +35
  System.Web.UI.Control.OnLoad(EventArgs e) +99
  System.Web.UI.Control.LoadRecursive() +50
  System.Web.UI.Control.LoadRecursive() +141
  System.Web.UI.Control.LoadRecursive() +141
  System.Web.UI.Control.LoadRecursive() +141
  System.Web.UI.Control.LoadRecursive() +141
  System.Web.UI.Control.LoadRecursive() +141
  System.Web.UI.Control.LoadRecursive() +141
  System.Web.UI.Control.LoadRecursive() +141
  System.Web.UI.Page.ProcessRequestMain(Boolean
includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
+627



Solution : Create thumbs directory  inside images and give read/write permission to it

Show LightBox Zoomed Image Even if there is one image added for the product

Nopcommerce1.4 If For the specific product there are more then 1 images added Zoom Image Functionality works using lightbox , but if only one image is there it doesn't work

To Zoom the image using lighbox even if only one image has been added for the product in Nopcommerce.14
Make highlighted changes in following files

1.)In Modules/ProductInfo.ascx
 
<td align="left">
<a href="<%#PictureManager.GetPictureUrl((int)Eval("PictureID"), 600)%>" rel="lightbox-p" title="<%= lProductName.Text%>">

<img src="<%#PictureManager.GetPictureUrl((int)Eval("PictureID"), 70)%>" alt="Product image" /></a>

</td>

2.) In ProductInfo.ascx.cs
ProductPictureCollection productPictures = product.ProductPictures;
                if (productPictures.Count >= 1)//Modified For more then 1 image
                {
                    defaultImage.ImageUrl = PictureManager.GetPictureUrl(productPictures[0].PictureID, SettingManager.GetSettingValueInteger("Media.Product.DetailImageSize", 300));
                    defaultImage.ToolTip = String.Format(GetLocaleResourceString("Media.Product.ImageAlternateTextFormat"), product.Name);
                    defaultImage.AlternateText = String.Format(GetLocaleResourceString("Media.Product.ImageAlternateTextFormat"), product.Name);
                    lvProductPictures.DataSource = productPictures;
                    lvProductPictures.DataBind();
                }

//comment out the below existing code
//else if (productPictures.Count == 1)//commented out for                 //{
                //    defaultImage.ImageUrl = PictureManager.GetPictureUrl(productPictures[0].PictureID, SettingManager.GetSettingValueInteger("Media.Product.DetailImageSize", 300));
                //    defaultImage.ToolTip = String.Format(GetLocaleResourceString("Media.Product.ImageAlternateTextFormat"), product.Name);
                //    defaultImage.AlternateText = String.Format(GetLocaleResourceString("Media.Product.ImageAlternateTextFormat"), product.Name);
                //    lvProductPictures.Visible = false;
                //}


Hide Product Price if Price Is Zero in Product Description in Nopcommerce


If Product Price is set as zero in Nopcommerce 1.4 You ll see the zero price in Description.
If you want to hide that zero price make the below highlighted changes


1.) In File ProductPrice.ascx  

      Add the outer most panel with id= "pnlHidePrice"

<asp:Panel ID="pnlHidePrice" runat ="server">
<asp:PlaceHolder runat="server" ID="phOldPrice">

    <%=GetLocaleResourceString("Products.OldPrice")%>&nbsp;
    <asp:Label ID="lblOldPrice" runat="server" CssClass="oldProductPrice" />
</asp:PlaceHolder>
<br />
<asp:Label ID="lblPrice" runat="server" Visible="false" />
<asp:Label ID="lblPriceValue" runat="server" CssClass="productPrice" />
<asp:PlaceHolder runat="server" ID="phDiscount">
    <br />
    <%=GetLocaleResourceString("Products.FinalPriceWithDiscount")%>&nbsp;&nbsp;
    <asp:Label ID="lblFinalPriceWithDiscount" runat="server" CssClass="productPrice" />
</asp:PlaceHolder>
</asp:Panel>


2.)In File ProductPrice.ascx.cs 
if (phDiscount.Visible || phOldPrice.Visible)
                {
                   
                    lblPrice.Text = GetLocaleResourceString("Products.FinalPriceWithoutDiscount");
                   
                   
                }

                ////Code Added to Hide the price                       if (finalPriceWithoutDiscount == 0)
                {
                    pnlHidePrice.Visible = false;
                }

Replicate changes in .ascx files in modules folder in Nopcommerce

    For replicating changes in modules/anyfilename.ascx.cs files, follow the steps below:

1)        Stop IIS and delete Temporary ASP.NET Files form the below location


 C:\WINDOWS\microsoft.net\framework\v2.0.50727\Temporary ASP.NET Files

2)         Open NopCommerceStore as a Project not as a solution or website.
3)         Do the Changes over there
4)         Rebuild It
5)         Publish it
6)         Now Open the NopCommerceStore as WebSite and rebuild the changes
7)     This should work. All the best.